• Thinkphp5 常量设置问题


    楼主是之前使用了thinkphp3.2快两年了,很早就听说过thinkphp的版本已经到达5了。

    不过鉴于早期的版本尚未完善,并没有立即开始学习。最近做一个项目,尝试一下新的知识。

    但是在使用的时候,的确不是很方便。文档方面是一个硬伤,不过是开源的,没有什么好吐槽的。

    在尝试自定义一些常量的时候,遇到了一些问题。

    像3.2版本的,直接就在整个项目下的index.php下面用define去定义一些常量,然后就可以在代码中直接使用。

    这次走了旧路,直接在整个项目下找到一个类似3.2版本index定义的think文件。代码如下:

    1 // 定义项目路径
    2 define('APP_PATH', __DIR__ . '/application/');
    3 
    4 // 加载框架引导文件
    5 require __DIR__.'/thinkphp/console.php';

    在此处,我需要定义上传的常量:

    故修改代码为:

    1 // 定义项目路径
    2 define('APP_PATH', __DIR__ . '/application/');
    3 // 定义上传路径
    4 define('UPLOAD_PATH', __DIR__.'/public/uploads/');
    5 // 加载框架引导文件
    6 require __DIR__.'/thinkphp/console.php';

    但是在寻找的时候却出现错误:

    Use of undefined constant UPLOAD_PATH - assumed 'UPLOAD_PATH'
    

    奇怪的就是你可以输入APP_PATH,并且按住control+鼠标左击,其实是能到达你定义的这个常量的。

    我看了一下官方的文档,并没有涉及这方面的讲解,至于收费文档里面有没有就不清出了。毕竟也没购买~~

    然后我就看是追踪一下访问的路径,发现前面是访问了public下的,明显,入口文件不是think。

    于是我在public目录下找到了正确的入口文件indexphp:

    1 // [ 应用入口文件 ]
    2 
    3 // 定义应用目录
    4 define('APP_PATH', __DIR__ . '/../application/');
    5 
    6 // 加载框架引导文件
    7 require __DIR__ . '/../thinkphp/start.php';

    和think.php有相同的地方。但是上面明显标有应用入口文件说明。

    然后思路就清晰了!此处提供三种方法定义:

    方法一:

    在应用入口文件定义常量

    在public/indexphp处将UPLOAD_PATH定义。定义后文件代码为:

    1 // [ 应用入口文件 ]
    2 
    3 // 定义应用目录
    4 define('APP_PATH', __DIR__ . '/../application/');
    5 // 定义上传目录
    6 define('UPLOAD_PATH', __DIR__.'/public/uploads');
    7 
    8 // 加载框架引导文件
    9 require __DIR__ . '/../thinkphp/start.php';

    则可访问UPLOAD_PATH常量(dump(UPLOAD_PATH))。

    方法二:

    定义一个自己的常量定义文件,例如:

    在extend目录下建立const.php文件,在里面输入:

    1 //自定义常量
    2 //上传目录
    3 define('UPLOAD_PATH', __DIR__.'/../public/uploads');

    然后再在入口文件内,引入该文件:

    1 // [ 应用入口文件 ]
    2 
    3 // 定义应用目录
    4 define('APP_PATH', __DIR__ . '/../application/');
    5 //方法二:
    6 //引入自定义常量文件
    7 require __DIR__ . '/../extend'. '/const.php';
    8 // 加载框架引导文件
    9 require __DIR__ . '/../thinkphp/start.php';

    即可访问到该常量的定义。

    方法三:

    跟踪一下APP_PATH的定义:

    发现在三处有定义(工具下的项目有点多~~当前为:documentary):

    分别是:public/index.php

    thinkphp/base.php

    tnink

    此时,可以在base.php下找到定义常来的代码。并插入UPLOAD_PATH的定义,即可访问。

    不过这种方法并不提倡,因为修改了核心的代码。更新之类的话,自找麻烦了。

  • 相关阅读:
    商人的诀窍 结构体
    商人的诀窍 结构体
    小泉的难题 结构体
    小泉的难题 结构体
    来淄博旅游 结构体
    来淄博旅游 结构体
    分类游戏 结构体
    7月20日学习
    7月19日学习
    7月18日学习
  • 原文地址:https://www.cnblogs.com/gxkB/p/7797832.html
Copyright © 2020-2023  润新知