ThinkPHP 3.2.3的 R 方法
R方法是可以调用其他的Controller中的方法,
例如
我想在Mit/DebugController.class.php中调用Foo/DoController.class.php中的share方法,
需要在Mit/DebugController.class.php中写成
$pass = R("Foo/Do/share",array("26121"));
new Foo\Controller\DoController
这里是同一个项目底下的不同分类(Foo和Mit)。
但是需要注意几点,
-
如果你定义了
Mit/Conf
底下定义的DB_PREFIX
和在Foo/Conf
不同,则在Foo/DoController.class.php的方法中需要重新动态定义C('DB_PREFIX','ofo');
为Foo
底下的配置。简单说就是,** 你用R()调用的方法使用的配置是当前的分类下的,而不是它原来的配置**,需要小心; -
R()方法的第3个参数是指定** layer **,默认的是
DEFAULT_C_LAYER
的Controller
。如果你指定了其他的layer,例如Foo/ConfigEvent.class.php
这,这里需要指定为Event
。 -
如果你定义了
ACTION_SUFFIX
也就是可以调用的方法的后缀,你必须要保证这里的DoController
类中的share
是public
而且加了ACTION_SUFFIX
; -
具体的你可以打开ThinkPHP的log,在
RunTime/Logs/Mit/2016.07.19.log
中查看具体的错误。
ThinkPHP的单字母方法在ThinkPHP/Common/functions.php
定义的,具体可以查看那里。
Reference:
天和地是灰色的,砖和瓦也是灰色的。临街的墙几经风化,几经修补,刷过黑灰、白灰,涂过红漆,书写过不同内容的标语,又终于被覆盖;风雨再把覆盖层胡乱地揭下来,形成一片斑驳的杂色,融汇于灰色的笼罩之中。路旁的树木苍黑,瓦楞中芳草青青。
远处,炊烟缭绕。迷蒙的曙色中,矗立着...