Pregunta

Actualmente en mi sitio que estoy usando frases como:

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

dependiendo del número de carpetas anidadas profunda que soy. Estoy seguro de que hay una mejor manera de hacer esto.

Estoy convencido de .htaccess es la solución, pero no estoy seguro de cómo hacer para implementarlo. Si inserto:

php_value include_path "public/html/root"

... pierdo el resto de mis caminos (/usr/lib/php, etc.). Ingenuamente intentado:

php_value include_path $include_path . "(path)"

pero por supuesto esto no funcionó. ¿Cómo podría anteponer o anexar un único camino a esta lista con .htaccess?

¿Fue útil?

Solución

Si no puede editar el archivo php.ini sí, se podría añadir

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

antes de que sus declaraciones include.

Sin embargo, si usted se encuentra con include o require problemas, es probable que sea un olor código. La mejor solución sería un buen diseño orientado a objetos con una buena función __autoload.

Otros consejos

Crea en las sub-sub-directorios .htaccess un archivo con el contenido

php_value include_path '../../includes'

o lo que sea include_path es el adecuado para ese directorio.

Ventajas:

  1. No hay truco feo, con múltiple incluye con diferente profundidad. Sólo include 'head.php'.
  2. No hay dependencia de php.ini edición.
  3. No hay necesidad de utilizar set_include_path() antes de incluir.
  4. No hay dependencia de los incluyendo constantes como include INCLUDE_PATH . 'head.php'.

precio a pagar:

basura su sub-sub-directorios, cada uno con un .htaccess archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top