thinkphp A()、R()方法不能跨项目调用与当前action名称相同的控制器的原因
2013-11-04 16:21
597 查看
thinkphp 使用A()和R()方法跨项目调用时,不能调用另一个项目中与当前所在action类名称相同的action类。
以下是common.php,import()方法308-312行
在这里的第2行中,使用了class_exists()方法判断所需要加载的类是否存在,如果不存在,就导入类库文件,也就是导入另一个项目的action类文件。
class_exists()的第2个参数为false,则不会__autoload(),也就是只会在当前文件中查找类是否存在,一般来说都是找不到的,所以可以顺利进入下一句。
但是,如果调用另一个项目中与当前所在action类名称相同的action类,则此句会认为你所要的action类已经存在,即当前操作的action,因为类名相同。然后系统返回的就是当前action类
以下是common.php,import()方法308-312行
$classfile = $baseUrl . $class . $ext; if (!class_exists(basename($class),false)) { // 如果类不存在 则导入类库文件 return require_cache($classfile); }
在这里的第2行中,使用了class_exists()方法判断所需要加载的类是否存在,如果不存在,就导入类库文件,也就是导入另一个项目的action类文件。
class_exists()的第2个参数为false,则不会__autoload(),也就是只会在当前文件中查找类是否存在,一般来说都是找不到的,所以可以顺利进入下一句。
但是,如果调用另一个项目中与当前所在action类名称相同的action类,则此句会认为你所要的action类已经存在,即当前操作的action,因为类名相同。然后系统返回的就是当前action类
相关文章推荐
- thinkphp A()、R()方法不能跨项目调用与当前action名称相同的控制器的原因
- Thinkphp5 的sesssion在同一个控制器不同的方法无法获取session的原因和对策
- thinkphp——通过跨控制器调用方法
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
- YII2调用当前控制器方法
- java静态方法不能调用非静态方法的原因
- Vue项目使用swiper做轮播图时,异步调用数据时导致图片不能滑动的解决方法
- 在JSP页面获取当前项目名称的方法
- ThinkPHP控制器间实现相互调用的方法
- 在界面跳转的时候,控制器调用prepareForSegue方法,为什么不能目的控制器的imageView属性赋值
- ThinkPHP控制器里javascript代码不能执行的解决方法
- jquery ajax 异步调用方法中不能给全局变量赋值的原因及解决办法
- thinkphp3.2跨控制器调用其他模块的方法
- yii获得当前控制器和action的方法
- thinkphp3.2【控制器调用视图view模板&视图模板与项目进行整合】
- 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法(转载)
- 【thinkphp3.x】thinkphp3.x中R方法调用其它控制器中的操作方法
- ThinkPHP跨控制器调用方法
- thinkphp3.2跨控制器调用其他模块的方法
- java.lang.IllegalThreadStateException异常原因解析——同一个线程不能重复调用start方法