簡體   English   中英

Laravel 5無法達到自定義類功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM