Pergunta

Atualmente no meu site, estou usando declarações como:

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

Dependendo de quantas pastas aninhadas eu tenho. Tenho certeza de que há uma maneira melhor de fazer isso.

Estou convencido .htaccess é a solução, mas não tenho certeza de como implementá -la. Se eu inserir:

php_value include_path "public/html/root"

... eu perco o resto dos meus caminhos (/usr/lib/php, etc). Eu tentei ingenuamente:

php_value include_path $include_path . "(path)"

Mas é claro que isso não funcionou. Como eu poderia adquirir ou anexar um único caminho a esta lista com .htaccess?

Foi útil?

Solução

Se você não pode editar o php.ini Arquive -se, você pode adicionar

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

antes do seu include declarações.

No entanto, se você se encontrar tendo include ou require problemas, provavelmente é um cheiro de código. A melhor solução seria um bom design orientado a objetos com um bom __autoload função.

Outras dicas

Crie nos sub-diretores sub-sub-diretores um arquivo .htaccess com o conteúdo

php_value include_path '../../includes'

como queiras include_path é adequado para esse diretório.

Vantagens:

  1. Nenhum hack feio com múltiplo inclui com profundidade diferente. Apenas include 'head.php'.
  2. Sem dependência da edição php.ini.
  3. Não há necessidade de usar set_include_path() antes de incluir.
  4. Sem dependência de incluir constantes como include INCLUDE_PATH . 'head.php'.

Preço a pagar:

Você espalha seus sub-diretores de sub-sub-sub-sub-um com um arquivo .htaccess.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top