Frage

Ich habe mich gefragt, ob es einen Weg gibt, einen relativen Pfad zu den Hauptordner zu machen (wo die index.php Lügen) von jeder Datei, die Bedürfnisse von AJAX enthalten oder angefordert werden.

Ich mag sowohl AJAX kombinieren und PHP ist so erstmals die Seite geladen werden mit PHP, und dann in der Lage sein, Teile der Seite mit AJAX zu aktualisieren, aber die Dateien sind gleich und liegt in Unterordner.

Ich habe Probleme mit dem Pfad und obwohl ich einen absoluten Pfad festlegen, dann muß ich es die Server-Änderungen jedes Mal ändern. Ich möchte einen relativen Pfad zu dem mein Projekt, aber nicht DOCUMENT_ROOT, da, dass man nicht die Arbeit mit Aliasnamen der Fall ist. (Oder wissen Sie, wie es mit Aliasnamen arbeiten zu machen?)

Danke!

EDIT * Hier ist, wie meine Verzeichnisstruktur aussieht:

[main_dir] /index.php - die Hauptindexdatei

[main_dir] / phpinc - die PHP-Include-Dateien - diese Arbeit nur mit enthalten (keine AJAX-Aufruf auf sie)

[main_dir] / Module - die Module sind Teile der Seite, kann entweder mit PHP oder AJAX genannt von überall aufgenommen werden (egal, werden sie als einzelne HTML-Datei geladen werden, so dass die Pfade in PHP in Bezug auf, wo das Modul phisically befindet.

Wenn Sie sie in PHP sind, werden sie in der Regel nehmen Sie die [main_dir] Pfad (weil index.php hat sie enthalten)

Also mein Problem ist: von den Moduldateien ich einige Dateien im phpinc Ordner enthalten sein soll, aber es könnte entweder sein ../phpinc/file.php oder phpinc / file.php

.

Gibt es eine elegantere Möglichkeit als eine nur darum,

if (is_dir("phpinc")) {
 $inc_path = "phpinc";   
} else if (is_dir("../phpinc")) {
 $inc_path = "../phpinc";
}

zu Beginn jedes Moduls?
Hoffen, dass diese Klärung gut genug ist.

War es hilfreich?

Lösung

Ich würde vorschlagen, PHP Autoloader zu verwenden:

Ich habe eine Klasse CAutoloadManager, die diese Methode hat:

static public addRepositoryForFilePattern( String $aPath, String $sPattern ) {}

Innerhalb index.php Ich Anruf

AutoloadManager::addRepositoryForFilePattern( './actions/', 'C*Action.inc.php' );
AutoloadManager::addRepositoryForFilePattern( './includes/', '*.inc.php' );

Autostart zum ersten Versuch anzuweisen, eine Klasse in ./actions/ für Namen wie CShowWelcomeAction.inc.php oder CLoginAction.inc.php zu lokalisieren. Die CAutoloadManager gesucht ./includes/ für andere Klassen.

PHP Autoload () Funktion wie folgt verwendet wird:

function __autoload($class_name) {

    include $class_name . '.php';

}

PHP nennt es jedesmal, wenn er nicht eine Klasse zu laden.

Actuall, das funktioniert sehr gut -. Obwohl für die Klassen nur

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top