PHP set_include_path для замены файлов шаблона, если файл существует
Я реализовал простую систему шаблонов, используя Oscommerce 2.3.4. Так что я могу управлять несколькими магазинами, с возможностью изменить содержимое или внешний вид магазина на основе "сайта" или "шаблона".
Основные файлы OSC (файлы модулей, классы и т. Д.) По-прежнему находятся в каталогах вне корня приложения, но шаблоны, языковые файлы и таблицы стилей находятся в каталогах 'templates' и 'sites'. Каждая структура каталогов 'template' или 'site' такая же, как и стандартная структура приложения OSC. Если файл присутствует в папках сайта / шаблона, он будет использоваться вместо него.
Существует каталог шаблонов по умолчанию для всех шаблонов по умолчанию и языковых файлов. Приоритет для выбора используемого файла выглядит следующим образом:
- Посмотрите, есть ли файл для конкретного сайта (sites/***/...).
- Иначе, посмотрите, есть ли определенный файл шаблона. (Шаблоны / *** /...)
- Иначе, используйте файл в каталоге шаблонов по умолчанию. (Шаблоны / по умолчанию /...)
Я собираюсь использовать функцию set_include_path для перечисления каждого из этих каталогов, упомянутых выше, чтобы воспользоваться преимуществами поведения include_path, описанного на php.net:
PHP рассматривает каждую запись в пути включения отдельно при поиске файлов для включения. Он проверит первый путь и, если не найдет его, проверит следующий путь, пока не найдет включенный файл или не вернется с предупреждением или ошибкой.
Это кажется почти идеальным для моей ситуации, однако я не мог найти, считается ли это "хорошей" практикой.
Мне было интересно, есть ли какие-либо подводные камни в использовании этого, такие как снижение производительности. Учитывая, что многие включения теперь будут искать в 3 каталогах, прежде чем наконец найти шаблон по умолчанию в 4-м месте.
(Хотя это немного хуже чем при использовании if(file_exists())
несколько раз, что является альтернативой.)
Также будет необходимо установить эти пути включения в верхней части приложения, поскольку пути используют переменные для текущего сайта и шаблона из приложения. Так что я не могу установить путь включения в php.ini
Любая помощь или совет высоко ценится