【发布时间】:2015-05-30 13:04:42
【问题描述】:
我在我的 laravel 项目中的“别名”下的“config/app.php”中添加了一个自定义外观
'GeoLocation' => '\App\Facades\GeoLocation',
自定义类的文件夹在'app/Facades/GeoLocation.php',服务提供者在'app/Providers/GeoLocationServiceProvider.php'
我如何需要在 app.php 中声明正确的别名才能正确加载 Facade?错误信息是:
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;
});
}
}
为了测试,我创建了另一个名为自定义函数的服务提供者:
<?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;
});
}
}
【问题讨论】:
-
将您的命名空间更改为 App\Facades\GeoLocation 并相应地更新您的 app.php,因为您的 Facades\ 命名空间不在作曲家自动加载覆盖范围内
-
不好意思问..我需要在哪里更改命名空间?
-
您必须更改文件 app/Facades/GeoLocation.php
-
我们可以快速聊天吗? :)
-
对不起.. 我试过了,但没用。让我快速编辑我的问题