Thinkphp5 常量设置问题
楼主是之前使用了thinkphp3.2快两年了,很早就听说过thinkphp的版本已经到达5了。
不过鉴于早期的版本尚未完善,并没有立即开始学习。最近做一个项目,尝试一下新的知识。
但是在使用的时候,的确不是很方便。文档方面是一个硬伤,不过是开源的,没有什么好吐槽的。
在尝试自定义一些常量的时候,遇到了一些问题。
像3.2版本的,直接就在整个项目下的index.php下面用define去定义一些常量,然后就可以在代码中直接使用。
这次走了旧路,直接在整个项目下找到一个类似3.2版本index定义的think文件。代码如下:
// 定义项目路径
define('APP_PATH', __DIR__ . '/application/'); // 加载框架引导文件
require __DIR__.'/thinkphp/console.php';
在此处,我需要定义上传的常量:
故修改代码为:
// 定义项目路径
define('APP_PATH', __DIR__ . '/application/');
// 定义上传路径
define('UPLOAD_PATH', __DIR__.'/public/uploads/');
// 加载框架引导文件
require __DIR__.'/thinkphp/console.php';
但是在寻找的时候却出现错误:
Use of undefined constant UPLOAD_PATH - assumed 'UPLOAD_PATH'
奇怪的就是你可以输入APP_PATH,并且按住control+鼠标左击,其实是能到达你定义的这个常量的。
我看了一下官方的文档,并没有涉及这方面的讲解,至于收费文档里面有没有就不清出了。毕竟也没购买~~
然后我就看是追踪一下访问的路径,发现前面是访问了public下的,明显,入口文件不是think。
于是我在public目录下找到了正确的入口文件indexphp:
// [ 应用入口文件 ] // 定义应用目录
define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
和think.php有相同的地方。但是上面明显标有应用入口文件说明。
然后思路就清晰了!此处提供三种方法定义:
方法一:
在应用入口文件定义常量
在public/indexphp处将UPLOAD_PATH定义。定义后文件代码为:
// [ 应用入口文件 ] // 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 定义上传目录
define('UPLOAD_PATH', __DIR__.'/public/uploads'); // 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
则可访问UPLOAD_PATH常量(dump(UPLOAD_PATH))。
方法二:
定义一个自己的常量定义文件,例如:
在extend目录下建立const.php文件,在里面输入:
//自定义常量
//上传目录
define('UPLOAD_PATH', __DIR__.'/../public/uploads');
然后再在入口文件内,引入该文件:
// [ 应用入口文件 ] // 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
//方法二:
//引入自定义常量文件
require __DIR__ . '/../extend'. '/const.php';
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
即可访问到该常量的定义。
方法三:
跟踪一下APP_PATH的定义:

发现在三处有定义(工具下的项目有点多~~当前为:documentary):
分别是:public/index.php
thinkphp/base.php
tnink
此时,可以在base.php下找到定义常来的代码。并插入UPLOAD_PATH的定义,即可访问。
不过这种方法并不提倡,因为修改了核心的代码。更新之类的话,自找麻烦了。
Thinkphp5 常量设置问题的更多相关文章
- java常量设置的方式
我们在写java程序的时候,常常有常量设置,如: public interface Const { //性别的常量 public interface Sex{ public final int 男=1 ...
- laravel5.8笔记六:公共函数和常量设置
公共函数 创建bootstrap/common.php <?php // 发送短信 function sendSMS($mobile){ } // 发送邮件 function sendMail( ...
- thinkphp将APP_DEBUG常量设置为false后报错的问题
ThinkPHP 将 APP_DEBUG 常量设置为 false 后出现了下面的问题: Parse error: syntax error, unexpected T_STRING in \www\R ...
- THINKPHP5获取设置缓存的例子
在THINKPHP5中 缓存的配置放在了config.php文件中 代码如下 如何设置缓存? 可以使用静态方法 Cache::set('key',$value,3600);//存储缓存 Cache:: ...
- java 常量 因为常量不依赖对象 所以一般都会将常量设置为 类属性
- WAMP采用别名时ThinkPHP5项目设置方法
打开public目录下的.htaccess文件,并在其中添加 RewriteBase /xxx<IfModule mod_rewrite.c> Options +FollowSymlink ...
- Java 静态变量,常量和方法
static 关键字 例如:在球类中使用PI这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量.这时没有必要 在两个类中同时创建PI这个常量,因为这样系统会将这两个不在同一个类 ...
- php大力力 [010节]PHP常量
2015-08-23 php大力力010. PHP常量 php大力力 [010节]PHP常量 设置 PHP 常量 如需设置常量,请使用 define() 函数 - 它使用三个参数: 首个参数定义常量的 ...
- 【Struts2学习笔记-3】常量配置
Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...
随机推荐
- js中的||与&&用法
&&和||在JQuery源代码内尤为使用广泛,由网上找了些例子作为参考,对其用法研究了一下: &&: function a(){ alert("a" ...
- JSP入门2
1. CRUD是Create(创建).Read(读取).Update(更新)和Delete(删除)的缩写,一般应用有这四项也就足够了. 我们这里的例子是对联系人信息进行CRUD操作. 2. javab ...
- Run Away 模拟退火
Run Away Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- ubuntu环境配置eclipse+opencv
blockquote { direction: ltr; color: rgb(0, 0, 0) } blockquote.western { font-family: "Liberatio ...
- VB.net DateTimePicker 初始化为空,选择后显示日期
目的:当某记录的日期数据为空的时候,DateTimePicker 不以默认当前时间显示. 优点:避免不规则的时间格式输入:符合平时遇到的时间输入习惯 缺点:设置要代码,没有textbox控件那么方便设 ...
- Ubuntu12.04 Firefox安装flash
1. 实验环境 Ubuntu 14.04x86 2.安装步骤 2.1 浏览器访问:https://get.adobe.com/flashplayer/?loc=cn 2.2 网址会自动识别ubuntu ...
- 【转】 Python subprocess模块学习总结
从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.comman ...
- For in 与For of 区别
For in 与For of 区别 for in遍历的是数组的索引(即键名)一般用于遍历对象:for(var index in obj):而for of遍历的是数组元素值:for(var value ...
- SqlServer2008 导入导出txt或Execl数据
--右键user表所在的数据库,然后任务--导出数据,然后根据提示设置就行 --从txt中导入 EXEC master..xp_cmdshell 'bcp Northwind.dbo.sysusers ...
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins
http://codeforces.com/contest/876/problem/D 题意: 最开始有一串全部由"O"组成的字符串,现在给出n个数字,指的是每次把位置n上的&qu ...