樓主是之前使用了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的定義,即可訪問。
不過這種方法並不提倡,因為修改了核心的代碼。更新之類的話,自找麻煩了。