Domanda

mi chiedevo se c'è un modo di fare un percorso relativo alla cartella principale (dove le bugie index.php) da tutti i file che devono essere inclusi o richiesti da AJAX.

Voglio combinare AJAX e PHP include quindi prima volta la pagina viene caricata con PHP, e quindi essere in grado di aggiornare parti della pagina con AJAX, ma i file sono gli stessi e si trovano in sottocartelle.

sto avendo problemi con il percorso e anche se posso impostare un percorso assoluto, poi devo cambiare ogni volta le modifiche del server. Voglio un percorso relativo al punto in cui il mio progetto è, ma non DOCUMENT_ROOT, perché che non funziona con gli alias. (O non si sa come farlo funzionare con gli alias?)

Grazie!

EDIT * Ecco come il mio elenco struttura appare:

[main_dir] /index.php - il file di indice principale

[main_dir] / phpinc - il php include file - che il lavoro solo con include (nessuna chiamata AJAX su di loro)

[main_dir] moduli / - i moduli sono parti della pagina, può essere compresa in PHP o AJAX chiamato da qualsiasi luogo (non importa, saranno caricati come file HTML individuo, in modo che i percorsi sono in PHP rispetto al punto in cui il modulo si trova fisicamente.

Quando li si include in PHP, che normalmente necessari alla [main_dir] percorso (perché index.php le ha incluse)

Quindi il mio problema è il seguente: dalle file dei moduli che voglio includere alcuni file nella cartella phpinc, ma potrebbe essere sia ../phpinc/file.php o phpinc / file.php

.

C'è un modo più elegante di un semplice porre

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

all'inizio di ogni modulo?
Spero che questo chiarimento è abbastanza buono.

È stato utile?

Soluzione

Mi piacerebbe propongo di utilizzare autoloader di PHP:

ho creato un CAutoloadManager classe che ha questo metodo:

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

In chiamata I index.php

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

per istruire l'autoload per primo tentativo di individuare una classe in ./actions/ per nomi come CShowWelcomeAction.inc.php o CLoginAction.inc.php. Il CAutoloadManager cercato ./includes/ per le altre classi.

autoload di PHP () si utilizza in questo modo:

function __autoload($class_name) {

    include $class_name . '.php';

}

PHP lo chiama ogni volta che si riesce a caricare una classe.

Actuall, questo funziona molto bello -. Anche se solo per le classi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top