有了YII后,重新审视phpcms框架
Author:[email protected] Date:
起初也没有什么mvc,工程思想。就是学了下html+css,javascript都不明觉厉,找些代码抄。因为工作需要,需要修改一下PHPCMS的源码。
我一开始还本着一种从PHPCMS入手来理解MVC模式,若干年过去,直到拿到yii代码后,才反思。phpcms也是MVC架构吗?怎么而看都感觉不出哪里的优势。
<?php set_time_limit(300); defined('IN_PHPCMS') or exit('No permission resources.'); //模型缓存路径 define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR); //定义在单独操作内容的时候,同时更新相关栏目页面 define('RELATION_HTML',true); pc_base::load_app_class('admin','admin',0); pc_base::load_sys_class('form','',0); pc_base::load_app_func('util'); pc_base::load_sys_class('format','',0); class content extends admin { private $db,$priv_db; public $siteid,$categorys; public function __construct() { parent::__construct(); $this->db = pc_base::load_model('content_model'); $this->siteid = $this->get_siteid(); $this->categorys = getcache('category_content_'.$this->siteid,'commons'); //权限判断 if(isset($_GET['catid']) && $_SESSION['roleid'] != 1 && ROUTE_A !='pass' && strpos(ROUTE_A,'public_')===false) { $catid = intval($_GET['catid']); $this->priv_db = pc_base::load_model('category_priv_model'); $action = $this->categorys[$catid]['type']==0 ? ROUTE_A : 'init'; $priv_datas = $this->priv_db->get_one(array('catid'=>$catid,'is_admin'=>1,'action'=>$action)); if(!$priv_datas) showmessage(L('permission_to_operate'),'blank'); } }phpcms的源码,来自文件D:\www\phpcms\phpcms\modules\content\content.php
在自己理解了MVC,并且看过大部分的人气比较高的MVC框架,国内的ThinkPHP、国外的symfony2 laravel以及yii之后再来看PHPCMS,再来评价下PHPCMS:
1)结构混乱,命名没有任何规则,比如前台可以访问的加action前缀之类的。
2)有必要在开头第一段写上判断吗?为什么不直接用.htaccess禁止任何人访问 /phpcms这个目录?
3)phpsso_server 这个目录写法完全是抄袭discuz,拖油瓶。
4)phpcms一直宣称MVC,让人觉得技术上很厉害,但是实际上运行起来非常缓慢,卡得无比。
PHPCMS是用PHP4的架构思路来完成MVC模式。
今天重新看了PHPCMS的源码,才明白了自己当时为什么会有那种感受“这就是传说中人人称赞的MVC吗”,还对MVC产生排斥感。PHPCMS的写法完全是一种PHP4的写法,严格来说根本就不符合MVC规范,根本就不是MVC架构!最后要说的是,用PHP4的思路架构写出PHPCMS这样一个系统来,比用MVC写出来累,且维护成本比流行MVC框架开发出来的程序高(时间精力上)。
转载本站文章《有了YII后,重新审视phpcms框架》,
请注明出处:https://www.zhoulujun.cn/html/php/yii/2015_0729_196.html
上一篇:第一页