如何使用dotenv变量变成class?
How to use dotenv variables into a class?
我刚开始学习 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);
}
}
因此,这里的问题是您不能将函数用作 class 常量值:
根据 PHP manual:
The value must be a constant expression, not (for example) a variable, a property, or a function call.
这个问题有很多解决方案,例如,如果你真的想让它保持不变,你可以使用这样的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();
我刚开始学习 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);
}
}
因此,这里的问题是您不能将函数用作 class 常量值:
根据 PHP manual:
The value must be a constant expression, not (for example) a variable, a property, or a function call.
这个问题有很多解决方案,例如,如果你真的想让它保持不变,你可以使用这样的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();