我正在构建一个脚本,它有一个静态类,用于加载一些东西,包括文件和视图。
class load
{
public static function view($file_path, $area)
{
debug::log('getting view <b>' . $area . $file_path . '</b>.');
ob_start();
self::file($file_path, 'areas/' . $area . '/views');
debug::log('flushing view <b>' . $area . $file_path . '</b>.');
eturn ob_get_clean();
}
public static function file($file, $folder)
{
if(is_file($file_path = ROOT . '/' . $folder . '/' . $file))
{
if(require_once $file_path)
{
debug::log('file <b>' . $file_path . '</b> included.');
return true;
}
}
else
debug::kill('requested file <b>' . $file_path . '</b> does not exist.');
}
}
在控制器中我调用视图方法来获取视图:
$html = load::view('public', 'path/to/view/file.php');
显然,我无法使用这种做法从视图文件中的控制器访问变量,因此我对视图类进行了小修改以捕获变量:
public static function view($file_path, $area, $vars = array())
并添加以下代码行以将键放入 vars:
while(list($n_list_var,$v_list_var)=each($vars))
$$n_list_var = $v_list_var;
但是我再次无法访问变量,因为我使用一种方法来加载文件。
我有一种加载文件的方法,因为我想测试并记录每个文件包含尝试,而不是每次需要包含文件时都重复代码。而且我在加载器类中有加载器视图,因此我将所有此类方法放在一起。我应该放弃使用类来加载文件吗?我应该在控制器的可扩展类上使用加载器视图方法吗?
我不想继续修改我的整个脚本,我想听听一些意见……最好的做法是什么?或者有没有办法解决我的问题?也许使用 __set 和 __get 魔术方法?
谢谢,