楼主是之前使用了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 常量设置问题的更多相关文章

  1. java常量设置的方式

    我们在写java程序的时候,常常有常量设置,如: public interface Const { //性别的常量 public interface Sex{ public final int 男=1 ...

  2. laravel5.8笔记六:公共函数和常量设置

    公共函数 创建bootstrap/common.php <?php // 发送短信 function sendSMS($mobile){ } // 发送邮件 function sendMail( ...

  3. thinkphp将APP_DEBUG常量设置为false后报错的问题

    ThinkPHP 将 APP_DEBUG 常量设置为 false 后出现了下面的问题: Parse error: syntax error, unexpected T_STRING in \www\R ...

  4. THINKPHP5获取设置缓存的例子

    在THINKPHP5中 缓存的配置放在了config.php文件中 代码如下 如何设置缓存? 可以使用静态方法 Cache::set('key',$value,3600);//存储缓存 Cache:: ...

  5. java 常量 因为常量不依赖对象 所以一般都会将常量设置为 类属性

  6. WAMP采用别名时ThinkPHP5项目设置方法

    打开public目录下的.htaccess文件,并在其中添加 RewriteBase /xxx<IfModule mod_rewrite.c> Options +FollowSymlink ...

  7. Java 静态变量,常量和方法

    static 关键字 例如:在球类中使用PI这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量.这时没有必要 在两个类中同时创建PI这个常量,因为这样系统会将这两个不在同一个类 ...

  8. php大力力 [010节]PHP常量

    2015-08-23 php大力力010. PHP常量 php大力力 [010节]PHP常量 设置 PHP 常量 如需设置常量,请使用 define() 函数 - 它使用三个参数: 首个参数定义常量的 ...

  9. 【Struts2学习笔记-3】常量配置

    Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...

随机推荐

  1. swift 开发学习问题

    1 UITableViewController 问题: [UITableView dequeueReusableCellWithIdentifier:forIndexPath:], unable to ...

  2. Delphi中 StrToIntDef函数的用法

    Delphi中 StrToIntDef函数的用法:比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strtoi ...

  3. 一个综合实例讲解vue的基础知识点。

    本文通过一个简单的实例来讲解一下vue的基本知识点.通过这个综合实例的讲解,vue的基础知识就会掌握的差不多了. 首先看一下项目的效果:

  4. 洗礼灵魂,修炼python(1)--python简介

    首先,本人也是刚接触python短短几个月,没有老鸟的经验和技能,大佬勿喷,以下所有皆是本人对python的理解 python,是一种解释型(高级)的,面向对象的,带有动态语义的高级程序设计的开源语言 ...

  5. VPS修改SSH端口不小心把自己给墙掉的一般解决办法

    很多人配置服务器的时候都习惯将 SSH 端口改为其他端口,以规避批量端口扫描,但也有不少人改完端口却忘了去防火墙修改端口,导致 SSH 登陆不上. 昨天我就这么干了 我把SSH端口从22改成了2345 ...

  6. C语言定义从URL中获取键值的接口

    环境:centos7下,对客户端http请求进行解析,来获取有效键值(包括汉字). 头文件 /* 这是一份关于从Http请求信息中提取键值的接口声明的头文件 */ #ifndef _HEAD_H_ # ...

  7. 用ESP8266+android,制作自己的WIFI小车(Android 软件)

    先说一下这篇文章里面的内容:TCP 客户端, 自定义对话框, 自定义按钮, ProgressBar竖直显示, 重力感应传感器,手机返回键新开启界面的问题(返回上次的界面),数据保存 软件的通信是配合 ...

  8. php获取音悦台视频

    <?php $url=isset($_GET['url'])?trim($_GET['url']):''; $url = "http://v.yinyuetai.com/video/6 ...

  9. 纯CSS3实现轮播图

    前言 纯css3实现的轮播图效果,和JavaScript控制的相比,简单高效了很多,但是功能也更加单一,只有轮播不能手动切换. 用什么实现的呢?页面布局 + animation动画 HTML部分 &l ...

  10. 手动打包MVC项目成Web Deploy包,发布至服务器

    ①确保服务器上安装了Web Deploy,可以使用微软Web Paltform Installer安装.https://www.microsoft.com/web/downloads/platform ...