【问题标题】:Facade not found by AliasLoader in LaravelAliasLoader 在 Laravel 中找不到外观
【发布时间】: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
  • 我们可以快速聊天吗? :)
  • 对不起.. 我试过了,但没用。让我快速编辑我的问题

标签: laravel facade


【解决方案1】:

最简单的方法是将文件app/Facades/GeoLocation.php'的命名空间改成App\Facades;

然后将别名注册更新为

'GeoLocation' => 'App\Facades\GeoLocation',

【讨论】:

  • 我刚刚这样做并得到了这个反馈:FatalErrorException in TestController.php line 17: Class 'Facades\GeoLocation' not found
  • 你还需要把命名空间改成文件CustomFunction,
  • 那个..还是一样的消息
  • 您是否对 app.php 进行了更改以通过这种方式注册您的外观? 'GeoLocation' =&gt; 'App\Facades\GeoLocation',
  • 是的...'GeoLocation' =&gt; 'App\Facades\GeoLocation', 'CustomFunction' =&gt; 'App\Facades\CustomFunction',
猜你喜欢
  • 2021-09-22
  • 2013-06-22
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多