PHP set_include_path для замены файлов шаблона, если файл существует

Я реализовал простую систему шаблонов, используя Oscommerce 2.3.4. Так что я могу управлять несколькими магазинами, с возможностью изменить содержимое или внешний вид магазина на основе "сайта" или "шаблона".

Основные файлы OSC (файлы модулей, классы и т. Д.) По-прежнему находятся в каталогах вне корня приложения, но шаблоны, языковые файлы и таблицы стилей находятся в каталогах 'templates' и 'sites'. Каждая структура каталогов 'template' или 'site' такая же, как и стандартная структура приложения OSC. Если файл присутствует в папках сайта / шаблона, он будет использоваться вместо него.

Существует каталог шаблонов по умолчанию для всех шаблонов по умолчанию и языковых файлов. Приоритет для выбора используемого файла выглядит следующим образом:

  1. Посмотрите, есть ли файл для конкретного сайта (sites/***/...).
  2. Иначе, посмотрите, есть ли определенный файл шаблона. (Шаблоны / *** /...)
  3. Иначе, используйте файл в каталоге шаблонов по умолчанию. (Шаблоны / по умолчанию /...)

Я собираюсь использовать функцию set_include_path для перечисления каждого из этих каталогов, упомянутых выше, чтобы воспользоваться преимуществами поведения include_path, описанного на php.net:

PHP рассматривает каждую запись в пути включения отдельно при поиске файлов для включения. Он проверит первый путь и, если не найдет его, проверит следующий путь, пока не найдет включенный файл или не вернется с предупреждением или ошибкой.

Это кажется почти идеальным для моей ситуации, однако я не мог найти, считается ли это "хорошей" практикой.

Мне было интересно, есть ли какие-либо подводные камни в использовании этого, такие как снижение производительности. Учитывая, что многие включения теперь будут искать в 3 каталогах, прежде чем наконец найти шаблон по умолчанию в 4-м месте. (Хотя это немного хуже чем при использовании if(file_exists()) несколько раз, что является альтернативой.)

Также будет необходимо установить эти пути включения в верхней части приложения, поскольку пути используют переменные для текущего сайта и шаблона из приложения. Так что я не могу установить путь включения в php.ini

Любая помощь или совет высоко ценится

0 ответов

Другие вопросы по тегам