[英]Laravel 5 can't reach custom class function
我有一個關於Laravel 5的問題。我在app目錄中創建了一個新目錄和文件。
App
Helpers
weather.php
Http
Controllers
test.php
我想訪問weather.php中的函數,但是不起作用。
Weather.php
namespace App\Helpers
class Weather {
public function test() {
return "A";
}
}
Test.php
namespace App\Http\Controllers;
class TestController extends Controller {
public function bla() {
return \App\Helpers\Weather\test();
}
}
我收到一個找不到該類的錯誤。 希望有人可以幫助我,因為我不知道怎么了。
問題是此行不正確:
return \App\Helpers\Weather\test();
如果要調用test
方法,則應首先創建對象Weather
的實例:
namespace App\Http\Controllers;
class TestController extends Controller {
public function bla()
{
$w = new \App\Helpers\Weather();
return $w->test();
}
}
相反,如果要直接在類上調用該方法,則應將此方法設為靜態:
class Weather {
public static function test() {
return "A";
}
}
並這樣稱呼:
public function bla()
{
return \App\Helpers\Weather::test();
}
在Laravel 5.0和5.1中,您不再需要運行composer dump-autoload
因為新的PSR-4會解決這一問題。
我認為這是正確的做法:
在Weather.php中-注意:文件名應為Weather.php
<?php namespace App\Helpers
class Weather {
public function test() {
return "A";
}
}
在TestController.php中
<?php namespace App\Http\Controllers;
use App\Helpers\Weather;
class TestController extends Controller {
public function __construct(Weather $weather){
$this->weather = $weather;
}
public function bla() {
return $this->weather->test();
}
}
我注意到weather.php
的小寫字母w應該是大寫字母。 也許那是問題所在?
您的幫助程序類應添加到autoload
部分composer.json
。 喜歡,
autoload": {
"files": [
"app/Http/Helpers/weather.php"
]
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.