我的文件夹结构如下:
config/
controller/
core/
lib/
smarty/
All Smarty Files
model/
views/
index.php
我的MVC通过index.php指示所有网络流量,其中包括以下用于自动加载的代码:
function __autoload($class){
$file = sprintf('%smodel/%s.class.php',__SITE_PATH,$class);
if(is_file($file)){
include $file;
return;
}
$file = sprintf('%smodel/%s.php',__SITE_PATH,$class);
echo $file;
if(is_file($file)){
include $file;
return;
}
}
请记住,您被迫使用不支持命名空间或SPLAutoloading的PHP版本,您如何更改__autoload函数或Smarty以便与您的网站一起玩(工作)?
我的具体问题是当smarty_internal_smartytemplatecompiler.php尝试包含文件时,它正在查看模型文件夹而不是smarty文件夹。我想我可以将Smarty移动到模型/,但这似乎并不“正确”。
答案 0 :(得分:1)
因为你正在使用< 5.3,不支持名称空间,所有Smarty类都以“smarty_”为前缀?如果是这样,你可以在__autoload()函数中添加一个条件,检查类名是否以“smarty_”开头,如果是,则告诉它搜索smarty文件夹:
if(strpos($class, "smarty_") === 0){
$file = sprintf('%slib/smarty/%s.php',__SITE_PATH,$class);
if(is_file($file)){
include $file;
return;
}
}