В ларавель конфиг файлы загружаются до старта приложения и только внутри них можно безопасно брать данные из env() (в теории можно везде конечно, но я как-то ловил с этим проблему либо они пропадают, либо глюк какой-то был, года два назад долбался)
то есть сначала ты в папке /config/ создаешь любой файл с расширением myfilename.php который возвращает массив, там хаваешь данные:
# ./.env
APP_API_URL=http://localhost
<?php
// ./config/myfilename.php
return [ 'api_url' => env('APP_API_URL') ];
<?php
// ./src/Commands/MyCommand.php
namespace App\Commands;
class MyCommand {
public function handle() {
$apiUrl = config('myfilename.api_url');
}
}
Иногда руководитель не хочет привязываться к ларавель и требует написать код работающий для любого фреймворка, в этом случае на вход исполняющего класса нужно передать array $configFilename, который потом настроить в AppServiceProvider.php (который по сути просто настройщик контейнера-инжектора):
<?php
// ./src/Providers/AppServiceProvider
namespace App\Providers;
Class AppServiceProvider {
public function register() {
$app->when(\App\Commands\MyCommand::class)
->needs('$configFilename')
->give(function () { return config('filename'); });
}
}
<?php
// ./src/Commands/MyCommand.php
namespace App\Commands;
class MyCommand {
protected $configFilename;
public function __construct(array $configFilename) {
$this->configFilename = $configFilename;
}
public function handle() {
$apiUrl = $this->configFilename['api_url'];
}
}
Похожий настройщик будет и у любого другого фреймворка, но смысл в том, что мы можем настроить это, а можем передать вручную. Это и делает код фреймворко-независимым.
Это что касается как прокинуть свою переменную окружения в любое место.
Есть еще вопрос как работает фасад Url и его метод ::temporarySignedUrl(). У каждого фасада есть ->getFacadeAccessor() который возвращает класс, занимающийся работой. Фасад это всего лишь "вызывалка" действий, которая вопреки всем законам ООП решили сделать статической.
Тебе нужно достать оттуда класс в каком-то методе ->handle() (создай себе TestCommand::class), или написать метод ->test() в каком-то из контроллеров (MainController.php или TestController.php), достать акцессор, посмотреть что за класс с помощью dd() или var_dump(get_class()). Потом найди этот класс в папке ./vendor/illuminate и посмотри внутри какую конкретно переменную оно использует. Может быть не APP_API_URL, а просто APP_URL ?
Если просто APP_URL, то надо подумать можно ли тебе её менять. Ведь скорее всего на эту переменную подвязан какой-нибудь Sitemap Generator, и значит нужно наследовать и подменять фасад для Uri, или писать свой класс декоратор, куда на вход будет исполнитель фасада прилетать, а все что он умеет - единственный метод, который делает то же действие по-другому.
Ларавель и архитектура это не друзья. Зато ларавель и короткий синтаксис - это работает.
Способ ларавеля это же сделать чуть другой (я думаю):
в файле routes.php ты своему роуту "verification.verify" в документации роутера на их сайте ищешь как установить домен. При любой попытке его создать он либо как-то будет использовать твой новый указанный домен, либо "попросит" (упадет в ошибку и не будет работать) его передать вместе с "id" и "hash".