AliasLoader в Laravel не обнаружил фасад
Я добавил собственный фасад в мой config/app.php в моем проекте laravel в разделе "aliases"
'GeoLocation' => '\App\Facades\GeoLocation',
Папка пользовательского класса находится в 'app/Facades/GeoLocation.php'
и поставщик услуг в 'app/Providers/GeoLocationServiceProvider.php'
Как мне указать правильный псевдоним в app.php, чтобы правильно загрузить Фасад? Сообщение об ошибке:
ErrorException in AliasLoader.php line 63:
Class 'Facades\GeoLocation' not found
Это мой фасад:
<?php namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class GeoLocation extends Facade {
protected static function getFacadeAccessor() { return 'geolocation'; }
}
Может ли быть так, что возвращаемое значение моего поставщика услуг неверно?
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class GeoLocationServiceProvider extends ServiceProvider {
public function register() {
\App::bind('geolocation', function()
{
return new GeoLocation;
});
}
}
Для теста я создал другого поставщика услуг с именем custom function:
<?php namespace App\Helpers;
class CustomFunction {
//Generate random float between -1 and 1
function f_rand($min = 0, $max = 1, $mul = 1000000) {
if ($min>$max) return false;
return mt_rand($min*$mul, $max*$mul) / $mul;
}
function test() {
echo "OK";
}
}
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class CustomFunctionServiceProvider extends ServiceProvider {
public function register() {
\App::bind('customfunctions', function()
{
return new CustomFunction;
});
}
}
1 ответ
Самый простой способ - изменить пространство имен на файл app/Facades/GeoLocation.php'на App\Facades
;
затем обновите регистрацию псевдонима до
'GeoLocation' => 'App\Facades\GeoLocation',