Domanda

Al momento sul mio sito che sto utilizzando affermazioni del tipo:

include 'head.php';
include '../head.php';
include '../../head.php';

a seconda di come molte cartelle nidificate profondo io sono. Sono sicuro che ci sia un modo migliore per farlo.

Sono convinto .htaccess è la soluzione, ma non sono sicuro di come fare per la sua attuazione. Se inserisco:

php_value include_path "public/html/root"

... perdo il resto dei miei percorsi (/usr/lib/php, ecc). Ho provato ingenuamente:

php_value include_path $include_path . "(path)"

ma ovviamente questo non ha funzionato. Come avrei potuto anteporre o aggiungere un singolo percorso di questa lista con .htaccess?

È stato utile?

Soluzione

Se non è possibile modificare il file php.ini in sé, si potrebbe aggiungere

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);

prima le sue dichiarazioni include.

Tuttavia, se vi trovate a dover include o require problemi, probabilmente è un odore di codice. La soluzione migliore sarebbe una buona progettazione orientata agli oggetti con una buona funzione __autoload.

Altri suggerimenti

Crea nelle sub-sub-directories un .htaccess file con il contenuto

php_value include_path '../../includes'

o qualsiasi altra cosa include_path è giusto per questa directory.

I vantaggi:

  1. Nessun brutto hack con più include con profondità diverse. Basta include 'head.php'.
  2. Nessuna dipendenza sulla modifica php.ini.
  3. Non c'è bisogno di utilizzare set_include_path() prima di includere.
  4. Nessun dipendenza tra cui costanti come include INCLUDE_PATH . 'head.php'.

prezzo da pagare:

È figliata il sub-sub-directory ciascuno con un file .htaccess.

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