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

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

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

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

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

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

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

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

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

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

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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]