編輯對于那些可能遇到類似錯誤的人 從 helpers.php 檔案中洗掉名稱空間,因為它不是一個類。
在我自己的情況下,正確的代碼應該是
use Illuminate\Http\Request;
use App\Models\User;
use Session;
function showTest(){
return "test";
}
..并不是
namespace App\Helpers;
use Illuminate\Http\Request;
use App\Models\User;
use Session;
function showTest(){
return "test";
}
原始問題
我正在尋找使用幫助程式在 laravel 中撰寫一個全域函式。
這是我的代碼 helpers.php
namespace App\Helpers;
use Illuminate\Http\Request;
use App\Models\User;
use Session;
function showTest(){
return "test";
}
作曲家.json
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
},
"files":[
"app/Helpers/helpers.php"
]
},
但是當我在控制器中呼叫該函式時,它會回傳錯誤;
dd(showTest());
它回傳此錯誤;
Call to undefined function App\Http\Controllers\User\showTest()
可能是什么問題呢?
我也跑了 composer dump-autoload
修改的
我已經嘗試了這里發布的所有解決方案,但它不起作用。
PHP 8 Laravel 9
uj5u.com熱心網友回復:
您需要運行作曲家dump-autoload,它會作業。
更多詳情請點擊這里
uj5u.com熱心網友回復:
另一種方法是在 Laravel 的服務容器中注冊您的 Helper 檔案。
您可以在現有的服務提供者檔案中執行此操作,也可以創建一個新檔案,例如HelperServiceProvider.php(可以使用php artisan make:provider完成)
在服務提供者的注冊方法中,您可以獲取您的幫助檔案并在全球范圍內要求它們,因此
public function register()
{
require_once(glob(app_path().'/Helpers/helpers.php');
}
如果你有多個檔案,你可以簡單地將它們放在一個 for each
public function register()
{
foreach (glob(app_path().'/Helpers/*.php') as $filename){
require_once($filename);
}
}
uj5u.com熱心網友回復:
首先,我想為所有的麻煩道歉。
問題是我在 helpers.php 檔案中使用了命名空間
這個話題救了我
https://stackoverflow.com/a/29736097/14940381
uj5u.com熱心網友回復:
嘗試將它們加載到 AppServiceProvider 引導方法而不是 composer 檔案中。
require_once app_path('Helpers/helpers.php');
uj5u.com熱心網友回復:
作曲家.json
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
},
"files":[
"app/Helpers/helpers.php",
"app\\Helpers\\helpers.php",
]
},
hepler.php
<?php
if(!function_exists('showTest')){
function showTest()
{
return "test";
}
}
if(!function_exists('showTest2')){
function showTest2()
{
return "test 2";
}
}
并運行composer dump-autoload
uj5u.com熱心網友回復:
您應該將幫助檔案的所有功能保存在一個幫助類中。應該是這樣的,
namespace App\Helpers;
use Illuminate\Http\Request;
use App\Models\User;
use Session;
class HelperClass {
function showTest(){
return "test";
}
}
然后使用可以添加命名空間,如 App\Helpers\HelperClass. 它應該作業。
謝謝:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481781.html
