• home > php > yii >

    有了YII后,重新审视phpcms框架

    Author:[email protected] Date:

    iPHPCMS应该是国内第一家用MVC架构来写开源PHP产品的,第一次接触phpcms应该是08年的时候,那个时候闹非典很厉害,然后也有足够多的时间折
     iPHPCMS应该是国内第一家用MVC架构来写开源PHP产品的,第一次接触phpcms应该是08年的时候,那个时候闹非典很厉害,然后也有足够多的时间折腾,当然看过帝国cms,还有织梦dedecms,但是phpcms的扩展性和自定义方面,征服了我。也让我走上了it这条不归路——最厌恶帝国cms,尼玛,完全是折腾死人的节奏……
    起初也没有什么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

    上一篇:第一页