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