laravel 使用use操作符匯入出現指向檔案路徑不對
阿新 • • 發佈:2019-02-14
自己寫了一個定時任務,一直執行的好好的,突然就報錯了。去檢查一番,發現其中一個use匯入的類檔案指向的路徑不對。
舉個例子。
在我控制器中use匯入類檔案test,下面是test.php檔案
<?php
namespace App\Tset;
class sqltest{}
然後在控制器檔案中use匯入test
<?php
namespace App\Http\Controllers;
use App\Tset\sqltest;
但是這裡use App\Test\sqltest指向的路徑卻不是test.php檔案。這時候我就想起來一件事,當時我粗心大意,不小心命令了兩個一樣的命令空間一樣的類名。然後我在執行laravel的php artisan命令時,報了以一個警告,這個警告的大致意思就是說,你有兩個一樣的名稱空間一樣的類名。
比如a檔案中的程式碼是
<?php
namespace App\Tset;
class sqltest{}
b檔案中的程式碼也是
<?php
namespace App\Tset;
class sqltest{}
但是呢,a檔案才是這個命令空間我想要的,但是我在執行php artisan命令時,告訴你因為有兩個一樣的,自動幫你指向了B檔案。這時候即便你去刪掉B檔案,use匯入這個類,還是指向的B檔案,會告訴你找不到B檔案了。
出現這種問題,執行composer dump-autoload就能解決了。
composer dump-autoload
這個命令是載入類檔案刪除後,然後新建。想要去看載入類檔案可以去vendor\composer資料夾下檢視。autoload_classmap.php就是命令空間的載入檔案啦,還有其他的,各種的都在vendor\composer,可以自己慢慢研究。
程式設計的時候一定要細心,不要再像我這樣犯這種基礎錯誤了0.0