【发布时间】:2011-09-22 18:14:39
【问题描述】:
我不确定如何问这个问题。基本上,我试图使我的视图对象成为从 Smarty 对象扩展的单例。然后我希望能够将视图对象扩展到我的控制器对象。
View 对象会将我想要的模板变量分配给我的所有控制器。
我知道我现在有问题,但如果有人能指出我正确的方向,那就太棒了。我尽量把这句话说出来。
<?php
defined('SITE_ROOT') ? null : define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT'].'/mvcsandbox');
require_once('Smarty/Smarty.class.php');
class View extends Smarty {
public static $instance=NULL;
public static function getInstance(){
if ( self::$instance === null ){
self::$instance = new self();
}
return self::$instance;
}
public function __construct() {
$this->template_dir = SITE_ROOT.'/Library/tmp/';
$this->compile_dir = SITE_ROOT.'/Library/tmp/';
$this->config_dir = SITE_ROOT.'/Library/tmp/';
$this->cache_dir = SITE_ROOT.'/Library/tmp/';
$this->assign("var1", "This is from the view class");
}
public static function output() {
self::display('test.tpl');
}
}
class Controller1 extends View {
public function init() {
$this->assign("var2", "This is from the Controller1 class");
}
}
class Controller1_index extends Controller1 {
public function init() {
$this->assign("var3", "This is from the Controller1_index class");
}
}
//$view = View::getInstance();
$controller1 = Controller1::getInstance();
$controller1_index = Controller1_index::getInstance();
$controller1->init();
//$controller1_index->init();
$controller1->output();
?>
【问题讨论】:
-
我认为你的意思是“单身”:D 虽然这个比喻很惊人。
-
是的,“Simpleton”引用我觉得不错,不过我真诚地建议您放弃 Smarty 并尝试在模板中使用 PHP's native capabilities。