thinkphp的R方法和系统常量

+----------------------------------------------------------------------------------------+\R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充.
R方法的调用格式:
R('[项目]://[分组/]模块','参数','控制器层名称')
例如我们定义了一个操作方法:
class UserAction extends Action{
    public function detail($id){
    return M('User')->find($id);
    
    }
}
那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法模块调用)

$data=R('User/detail',array('5'));

表示调用User控制器里面的details(details必须是public类型),返回值就是查询id为5的一个用户数据.如果你要调用的操作方法就是没有任何参数的话,第二个参数留空,直接使用:
R('Admin://User/detail',array('5'))
表示调用Admin项目下面的User控制器的detail方法

官方的建议是不要在同一层多太多调用,会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助3.1的特性多层控制器,单独添加一个控制器层用于接口调用,例如我们增加一个Api控制器层:

class UserApi extends Action{
    public function detail($id){
        return M('User')->find($id);
    }
}

然后,使用R方法调用:

$data=R('User/detail',array('5'),'Api');

也就是说,R方法的第三个参数支持指定调用的控制器层.
同时R方法调用方法的时候可以支持操作名后缀设置C('ACTION_SUFFIX'),如果你设置了操作方法后缀..仍然不需要更改R方法的调用方式.
+----------------------------------------------------------------------------------------+
常量参考:

预订量定义:
URL_COMMON=0 普通模式URL
URL_PATHINFO=1 PATHINFO URL
URL_REWRITE=2  REWRITE URL
URL_COMPAT=3   兼容模式URL
HAS_ONE=1    HAS_ONE关联定义
BELOGS_TO=2     BELONGS_TO关联定义
HAS_MANY=3    HAS_MANY关联定义
MANY_TO_MANY=4    MANY_TO_MANY关联定义
THINK_VERSION    框架版本号码
这些预定义常量不会随着环境的变化而变化.

路径常量:
系统和项目的路径用于系统默认的目录规范,可以重新定义改变,如果不希望定制目录,这些常量一般不需要更改.

CORE_PATH    系统核心类库目录    THINK_PATH.'/Lib'
EXTEND_PATH    系统扩展目录        THINK_PATH.'Extend/'
MODE_PATH    模式扩展目录        EXTEND_PATH.'Model/'
VENDOR_PATH    第三方类库目录        EXTEND_PATH.'Vendor/'
ENGINE_PATH    引擎扩展目录        EXTEND_PATH.'Engine/'
LIBRARY_PATH    系统扩展类目录        EXTEND_PATH.'Engine/'
COMMON_PATH    项目公共目录        APP_PATH.'Common/'
LIB_PATH    项目类库目录        APP_PATH.'Lib/'
RUNTIME_PATH    项目运行时目录        APP_PATH.'Runtime/'
CONF_PATH    项目配置目录        APP_PATH.'Conf'
LOG_PATH    项目日志记录        RUNTIME_PATH.'Logs'
CACHE_PATH    项目模版缓存目录    RUNTIME_PATH.'Cache'
LANG_PATH    项目语言包目录        APP_PATH.'Lang/'
TEMP_PATH    项目缓存目录        RUNTIME_PATH.'Temp/'
DATA_PATH    项目数据目录        RNTIME_PATH.'Data/'
TMPL_PATH    项目模版目录        APP_PATH.'Tpl/'
HTML_PATH    项目静态缓存目录    APP_PATH.'Html/'

系统常量
IS_CGI        是否属于CGI
IS_WIN        是否属于Windows运行环境
IS_CLI        是否属于命令行模式
__ROOT__    网站根目录地址
__APP__         当前项目(入口文件)地址
__GROUP__    当前分组的URL地址
__URL__        当前模版的URL
__ACTION__    当前项目操作的URL地址
__SELF__    当前URL地址
__INFO__    当前的PATH_INFO字符串
APP_NAME    当前项目名
THINK_PATH    系统框架目录
MEMORY_LIMIT_ON        系统内存统计支持
RUNTIME_FILE    项目编译缓存文件名
THEME_NAME    当前主体名称
THEME_PATH    当前模版主体路径
APP_TMPL_PATH    当前模版URL路径
LANG_SET    当前浏览器语言
MAGIC_QUOTES_GPC    MAGIC_QUOTES_GPC

posted @ 2012-09-22 18:44  sgsheg  阅读(252)  评论(0编辑  收藏  举报