多层MVC,继承问题。

浏览:1246 发布日期:2013/08/30 分类:求助交流 关键字: 多层MVC 继承
官方教程:http://www.thinkphp.cn/document/65.html


我现在有一个逻辑层logic

有3个类 CommonLogic、TgLogic、 ArticleLogic,

ArticleLogic继承TgLogic, Tglogic继承CommonLogic;

当我实例化ArticleLogic时候,就会报错 'TgLogic' not found

难道多层MVC不支持继承吗?class CommonLogic extends Model {
    public $model = null;

    public function __construct( $modelName ) {
        $this -> model = D( $modelName );
        echo 'CommonLogic' . "\n";
    }
}
class TgLogic extends CommonLogic {
    public function __construct( $modelName ) {
        parent::__construct( $modelName );
        echo 'TgLogic' . "\n";
    }
}
class ArticleLogic extends TgLogic {

    public function __construct() {
        parent::__construct( 'Article' );
    }
}
----------------------------我是分割线------------------------------

我的解决方法:
修改core目录下的核心文件Think.class.php/**
     * 系统自动加载ThinkPHP类库
     * 并且支持配置自动加载路径
     * @param string $class 对象类名
     * @return void
     */
    public static function autoload($class) {
        // 检查是否存在别名定义
        if(alias_import($class)) return ;
        $libPath    =   defined('BASE_LIB_PATH')?BASE_LIB_PATH:LIB_PATH;
        $group      =   defined('GROUP_NAME') && C('APP_GROUP_MODE')==0 ?GROUP_NAME.'/':'';
        $file       =   $class.'.class.php';
        if(substr($class,-8)=='Behavior') { // 加载行为
            if(require_array(array(
                CORE_PATH.'Behavior/'.$file,
                EXTEND_PATH.'Behavior/'.$file,
                LIB_PATH.'Behavior/'.$file,
                $libPath.'Behavior/'.$file),true)
                || (defined('MODE_NAME') && require_cache(MODE_PATH.ucwords(MODE_NAME).'/Behavior/'.$file))) {
                return ;
            }
        }elseif(substr($class,-5)=='Model'){ // 加载模型
            if(require_array(array(
                LIB_PATH.'Model/'.$group.$file,
                $libPath.'Model/'.$file,
                EXTEND_PATH.'Model/'.$file),true)) {
                return ;
            }
        }elseif(substr($class,-6)=='Action'){ // 加载控制器
            if(require_array(array(
                LIB_PATH.'Action/'.$group.$file,
                $libPath.'Action/'.$file,
                EXTEND_PATH.'Action/'.$file),true)) {
                return ;
            }
        }elseif( substr($class,-5)=='Logic' ) { // 逻辑层
            if(require_array(array(
                LIB_PATH.'Logic/'.$group.$file,
                $libPath.'Logic/'.$file,
                EXTEND_PATH.'Logic/'.$file),true)) {
                return ;
            }
        }
// 在这里添加自动加载的目录
// ......
// 其他代码
// ......
不知道有没有人有更好的解决方法?
最佳答案
评论( 相关
后面还有条评论,点击查看>>