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的定義,即可訪問。

不過這種方法並不提倡,因為修改了核心的代碼。更新之類的話,自找麻煩了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM