Smarty 单例模式的实现

manbudezhu 发布于 2016/08/23 11:06
阅读 227
收藏 0

最近学习设计模式,想把自己的框架中对smarty的引用设置成单例模式,遇到了一些困惑.

SmartyView.php

require_once './Smarty/Smarty.class.php'; //使用单例模式构建samrty class SmartyView extends Smarty{ //私有克隆 private function __clone(){} //静态属性存放smarty对象 static protected $instance; //公共静态方法,实例化对象 static public function getInstance(){ //如果静态对象没有实例化则新建 if(!self::$instance instanceof self){ self::$instance=new Smarty(); } return self::$instance; } protected function __construct(){ $this->getConfigs(); } protected function getConfigs(){ // 设置smarty配置 $compdir='Compile/'; is_dir($compdir)||mkdir($compdir,0777,true); self::$instance->compile_dir='$compdir'; $temdir='View'; is_dir($temdir)||mkdir($temdir,0777,true); self::$instance->template_dir=$temdir; $cachedir='Cache/'; is_dir($cachedir)||mkdir($cachedir,0777,true); self::$instance->cache_dir=$cachedir; self::$instance->caching=0; self::$instance->cache_lifetime=60*60*24; self::$instance->left_delimiter="{{"; self::$instance->right_delimiter="}}"; } }


我想让配置文件run.inc.php统一实例化smarty对象(这个文件可能还要统一实例化其他对象,如数据库操作对象等),然后让Controller继承Smarytview,实现页面的显示.

run.inc.php 

require_once './Smarty/Smarty.class.php';
require_once 'SmartyView.php';
SmartyView::getInstance();



controller.php 该怎么写了,请高手指教,谢谢.我这个思路有问题没,还有哪些好的思路实现smarty的单例模式.

还有一个其他问题,我如何才能让sublime中写好的代码粘贴到oschina中,保留缩进了,这样代码看起来清楚点,一粘贴进去缩进就没了.

加载中
返回顶部
顶部