Как использовать переменные 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);
}
}

0

Решение

Итак, проблема в том, что вы не можете использовать функцию в качестве значения константы класса:

Согласно PHP руководство:

Значение должно быть константным выражением, а не (например) переменной, свойством или вызовом функции.

Есть много решений этой проблемы, например, если вы действительно хотите, чтобы она была постоянной, вы можете использовать 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();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]