活用工厂模式调用smarty
来源:互联网 发布:sql weekday 编辑:程序博客网 时间:2024/05/03 00:38
最近项目用了ajax 弹出 网页层,先是把弹出 网页层的模版放在了主要页面的模版文件夹下,不过混在一起不太好。就想把模版放到新的文件夹。
看了下引用smarty的inc文件,$tmpl = new Smarty;$tmpl->left_delimiter='<{';$tmpl->config_dir=。。。。。
不想再写一个smarty的inc文件,因为有一个主要的inc文件引用别的inc,你再建另一个主要的inc文件就不好了。想用工厂模式,但php4不支持static方法,也无如此必要,就直接写了个函数。
function FTmpFactory($type='')
{
$smarty = new Smarty;
if($type == '')
{
//default
}
if($type=='pop_up')
....
}
$tmpl = FTmpFactory();
弹出 网页层的php文件只用写句 $pop_up = FTmpFactory('pop_up');
想看详细的,大约这样写。
function FTmpFactory($type=''){ $smarty = new Smarty; {// 共用的默认值 $smarty->compile_check = true; $smarty->debugging = false; $smarty->caching = false; //$smarty->left_delimiter = '<{'; //$smarty->right_delimiter = '}>'; // 以下常量除了php魔术常量,都是自定义的常量,如果不定义会出错。 $smarty->template_dir = TEMPLATE_PATH.'/'; $smarty->compile_dir = TEMPLATE_PATH.'_c/'; } switch ($type) {//实际上这些中括号并不需要 case '': { //根据php的目录路径来确定模版的路径 前提 controllers/$目录 和 view/$目录 的$目录值要一样。 // __DIR__等价于 dirname(__FILE__)。需PHP 5.3。另外如果有改路由规则,不像$_SERVER['PHP_SELF']等,__DIR__还是能得到实际路径 $smarty->config_dir = HTDOCS_PATH.'/'.basename(__DIR__).'/'; break; } case 'default': { $smarty->config_dir = HTDOCS_PATH.'/'; break; } case 'pop_up': { $smarty->left_delimiter = '<{'; $smarty->right_delimiter = '}>'; $smarty->config_dir = HTDOCS_PATH.'/pop_up/'; break; } case 'mail': { $smarty->config_dir = MAIL_TEMP_PATH; break; } default: { // $smarty->config_dir = HTDOCS_PATH."/{$type}/"; //已经够用暂不需要 break; } } return $smarty;}$tmpl = FTmpFactory();
首先,先在主引用文件定义$smarty;
然后$tmpl = FTmpFactory($smarty);
function FTmpFactory($tmpl, $type='', $clone_ = true)
{
$smarty = Clone($tmpl); // 克隆需要php5(php4默认是克隆),不过这是浅克隆,不同克隆对象中的对象的指针还是一样的。
//...........
return $smarty;
}
再说一下主要的inc文件引用别的inc的好处,我们项目有一个被它引用的数据库类.inc.php,是pg的。如果要换在mysql数据库,只用改一下被引用的数据库类.inc的名字就可以了。当然,程序中的sql语句还是要小改的。达到了工厂模式一样的效果,也算一种书上没有的(至少我看过的没有)设计模式吧。
- 活用工厂模式调用smarty
- 活用XP安全模式
- 活用设计模式
- 活用设计模式
- [转载]活用设计模式
- 活用设计模式
- 活用设计模式
- 活用设计模式
- 活用设计模式
- 活用设计模式
- smarty 文件嵌套调用
- smarty调用php常量
- smarty从数据库调用
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- jointable 的用法
- 2012.7.16总结
- Linux平台gcc和动态共享库的基础知识
- find_appear_once
- linux内核编译
- 活用工厂模式调用smarty
- poj 3278 Catch That Cow
- Oracle数据库exp imp按用户导出导入实例
- hdu1116
- C++程序设计同步实践宝典——前言
- linux内核bzImage产生的过程
- oracle用scott登录提示the account is locked的解决方法
- sicily--1636. show me the money
- jQuery小试之菜单栏