如何将dotenv变量用于一个类?

时间:2016-11-26 17:13:02

标签: php laravel-dotenv

我几天前刚开始学习PHP,请原谅我,如果这个问题是新手问题。 我宣布CRAWLER_URI有什么问题? env()不在方法之外工作,我不知道为什么。

namespace App\Http\Controllers;

use GuzzleHttp\Client; 

class SpotifyController extends Controller
{
    const CRAWLER_URI = env('CRAWLER_URI') . ':' . env('CRAWLER_PORT');

    /**
     * Send a GET to Crawler API
     * @return a json crawled by an external API crawler
     */
    public function fetch()
    {
        $client   = new Client(['base_uri' => self::CRAWLER_URI]);
        $response = $client->request('GET');

        dd($response);
    }
}

1 个答案:

答案 0 :(得分:1)

所以,这里的问题是你不能将函数用作类常量值:

根据PHP manual

  

值必须是常量表达式,而不是(例如)变量,属性或函数调用。

这个问题有很多解决方案,例如,如果你真的想让它保持不变,你可以使用这样的define()语句:

define('CRAWLER_URI', env('CRAWLER_URI') . ':' . env('CRAWLER_PORT'));

并像这样访问:

echo CRAWLER_URI;

另一种方法是使用静态函数:

private static function CRAWLER_URI() {
    return env('CRAWLER_URI') . ':' . env('CRAWLER_PORT');
}

并像这样访问:

echo $this->CRAWLER_URI();