如果文件存在,则使用PHP set_include_path替换模板文件

时间:2017-11-14 12:26:48

标签: php templates include-path oscommerce set-include-path

我使用Oscommerce 2.3.4实现了一个简单的模板系统。因此,我可以经营多家商店,有可能在“网站”或“模板”的基础上更改商店的内容或外观。

核心OSC文件(模块文件,类等)仍驻留在app根目录下的目录中,但模板,语言文件和样式表位于“模板”和“站点”目录中。每个“模板”或“站点”目录结构与OSC应用程序的标准结构相同。如果站点/模板文件夹中存在文件,则将使用该文件。

所有默认模板和语言文件都有一个默认模板目录。选择使用哪个文件的优先顺序如下:

  1. 查看是否有特定于站点的文件(sites / *** / ...)。
  2. 否则,查看是否有特定于模板的文件。 (templates / *** / ...)
  3. 否则,请使用默认模板目录中的文件。 (模板/默认/...)
  4. 我正在考虑使用set_include_path函数列出上面提到的每个目录,以利用php.net上记录的include_path的行为:

      

    在查找要包含的文件时,PHP会分别考虑包含路径中的每个条目。它将检查第一个路径,如果找不到它,请检查下一个路径,直到找到包含的文件或返回警告或错误。

    这似乎对我的情况来说几乎是理想的,但我无法确定这是否被认为是“好”的做法。

    我很感兴趣,如果有任何陷阱使用这样的,如性能打击。考虑到很多包含现在将在3个目录中查找,最后在第4个位置找到默认模板。 (虽然这比使用if(file_exists())多次更糟糕,但这是另一种选择。)

    此外,有必要在应用程序顶部设置这些包含路径,因为路径使用应用​​程序中当前站点和模板的变量。所以我无法在php.ini中设置包含路径

    非常感谢任何帮助或建议

0 个答案:

没有答案