Есть ли что-то для автоматического включения файлов, отличных от классов в PHP?

Функция magic __autoload работает только для классов, не так ли? Как насчет других файлов, таких как шаблоны? Мне бы хотелось увидеть решение, в котором мне вообще не нужно заботиться о большой проблеме «где файл? Каков путь, когда я должен его включать?». Будет большая экономия времени.

Представление? Ну … в этом случае я бы предпочел бы более быстрое развитие над производительностью, потому что … эй..эты сталкиваются с этим, 99,99% наших веб-сайтов, которые мы делаем, редко посещаются в любом случае. И когда наступает день, когда мы получаем миллион посетителей, мы, вероятно, большие, Inc. и платим 10 разработчиков, чтобы улучшить его.

Ну, по крайней мере, для моей рамки.

Посмотрите set_include_path () . Он позволяет вам установить список каталогов, в которых будет выглядеть PHP, когда вы пытаетесь включить файл. Поэтому, если у вас есть все ваши шаблоны в одном каталоге, скажите templates/ , вы можете просто:

 set_include_path(get_include_path() . PATH_SEPARATOR . 'templates'); //... include 'mytemplate.php'; 

И PHP найдет правильный файл. Это все еще требует include (), но это помогает. Кроме того, явное указание того, какие файлы вы включаете, – это хорошая вещь.

Вы можете пойти лучше.

загляните в файл php.ini для auto_prepend_file и auto_append_file.

auto_prepend_file NULL PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3. auto_append_file NULL PHP_INI_PERDIR PHP_INI_ALL в PHP <= 4.2.3.

строка auto_prepend_file

 Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require() function, so include_path is used. The special value none disables auto-prepending. 

строка auto_append_file

 Specifies the name of a file that is automatically parsed after the main file. The file is included as if it was called with the require() function, so include_path is used. The special value none disables auto-appending. Note: If the script is terminated with exit(), auto-append will not occur.