+ -
当前位置:首页 → 问答吧 → 天大的Bug!!!

天大的Bug!!!

时间:2011-06-07

来源:互联网



两项目 Core 和 Apps

在Core 项目中有:
CoreTestAction 有方法如下
public function test(){
        print_r('CoreTestAction,');
        print_r(D('CoreTest')->test());
}

CoreTestModel 有方法如下
public function test(){
        return "CoreTestModel";
}

在Apps 项目中有 TestAction
public function test(){
       print_r(A("CoreTest","Core")->test());
}

问题出来了 使用 Apps test 的时候
可以访问 CoreTestAction test 正常 输出"CoreTestAction,"
而后面接着就是错误了: CoreTestModel 木有 test 方法 有木有

如果在Apps中也有 CoreTestModel 那你知道输出什么了吗? 是Apps下的 CoreTestModel 而不是Core 项目下的

总结下 不知道是我的问题还是你们的问题 在跨项目A($name,$app='@') 在调用的Action中有D(Model)的基本上都用不上里只能被当成M(Model),或者说被程序当成原项目的Model了,而且虽然在D()中有C('DEFAULT_APP'),也是定义在原项目有效 定义在被调用项目没意义, 要是在原项目每个D()都写app,那么.......希望改下D()方法,所以 你懂得

作者: alienoooo   发布时间: 2011-06-07

其实,你再继续想一下, 就知道方法了。

定义公用配置:
所有项目的config.php 文件 改为 如下格式:
  1. <?
  2. $config1=array(
  3. //这里定义你的项目配置
  4. );
  5. $config2=include("../../config.php");//这里是公用配置的地址
  6. return array_merge($config1,$config2);//合并两种配置。
  7. ?>
复制代码
然后在你公用配置中 定义 'DEFAULT_APP' 配置项

作者: luofei614   发布时间: 2011-06-07