首页 > php > yii > > 正文

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

发布人:zhoulujun@live.cn    点击:

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框架开发出来的程序高(时间精力上)


上一篇:First page