tp5 怎么获取项目根目录和之前的__ROOT__一样,有没有这样的常量

最佳答案

5.0和5.1的获取方式是不一样的

常量调整

5.1取消了所有的框架内置常量(不影响应用代码中的自定义常量),如需获取,请使用think\facade\App类的内置方法以及think\facade\Env类获取,下面给出的是5.0和5.1的常量对照表:

5.0常量5.1获取方法
EXT取消,固定使用 .php
IS_WIN取消
IS_CLI取消
DS使用PHP自带 DIRECTORY_SEPARATOR
ENV_PREFIX取消,固定使用PHP_
THINK_START_TIMEApp::getBeginTime()
THINK_START_MEMApp::getBeginMem()
THINK_VERSIONApp::version()
THINK_PATHEnv::get('think_path')
LIB_PATHEnv::get('think_path') . 'library/'
CORE_PATHEnv::get('think_path') . 'library/think/'
APP_PATHEnv::get('app_path')
CONFIG_PATHEnv::get('config_path')
CONFIG_EXTApp::getConfigExt()
ROOT_PATHEnv::get('root_path')
EXTEND_PATHEnv::get('root_path') . 'extend/'
VENDOR_PATHEnv::get('root_path') . 'vendor/'
RUNTIME_PATHEnv::get('runtime_path')
LOG_PATHEnv::get('runtime_path') . 'log/'
CACHE_PATHEnv::get('runtime_path') . 'cache/'
TEMP_PATHEnv::get('runtime_path') . 'temp/'
MODULE_PATHEnv::get('module_path')

通过Env类的get方法获取路径变量的时候不区分大小写,例如下面的写法是等效的:

Env::get('root_path');
Env::get('ROOT_PATH');

参考资料:https://www.kancloud.cn/manual/thinkphp5_1/354155

其他回答

方法一:使用 App 类获取根目录

use think\facade\App;
$rootPath = App::getRootPath();

方法二:可以看文件:thinkphp/base.php,里面有定义文件夹路径常量

常用路径常量说明(5.0):

  • THINK_PATH 框架系统目录
  • ROOT_PATH 框架应用根目录
  • APP_PATH 应用目录(默认为application)
  • CONF_PATH 配置目录(默认为APP_PATH)
  • LIB_PATH 系统类库目录(默认为 THINK_PATH.'library/')
  • CORE_PATH 系统核心类库目录 (默认为 LIB_PATH.'think/')
  • TRAIT_PATH 系统trait目录(默认为 LIB_PATH.'traits/')
  • EXTEND_PATH 扩展类库目录(默认为 ROOT_PATH . 'extend/')
  • VENDOR_PATH 第三方类库目录(默认为 ROOT_PATH . 'vendor/')
  • RUNTIME_PATH 应用运行时目录(默认为 ROOT_PATH.'runtime/')
  • LOG_PATH 应用日志目录 (默认为 RUNTIME_PATH.'log/')
  • CACHE_PATH 项目模板缓存目录(默认为 RUNTIME_PATH.'cache/')
  • TEMP_PATH 应用缓存目录(默认为 RUNTIME_PATH.'temp/')

备选方案:可以自定义常量,或者使用 $_SERVER['HTTP_HOST']

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部