将Smarty集成到自定义PHP MVC中

时间:2015-01-20 22:34:31

标签: php smarty

我的文件夹结构如下:

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移动到模型/,但这似乎并不“正确”。

1 个答案:

答案 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;
  } 
}