【问题标题】:Laravel 5.4 – error while creating facadeLaravel 5.4 – 创建外观时出错
【发布时间】:2019-01-17 21:15:53
【问题描述】:

这就是我创建助手的方式(App\Helpers\Settings.php)

namespace App\Helpers;

use Illuminate\Database\Eloquent\Model;

class Settings {

    protected $settings = [];

    public function __construct() {

        $this->settings['AppName'] = 'Test';
    }

    /**
     * Fetch all values
     *
     * @return mixed
     */
    public function getAll () {
        return $this->settings;
    }
}

创建外观(App\Helpers\Facades\SettingsFacade.php)

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class Settings extends Facade {

    protected static function getFacadeAccessor() {
        return 'Settings';
    }
}

创建服务提供者(App\Providers\SettingsServiceProvider.php)

namespace App\Providers;

use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider;

class SettingsServiceProvider extends ServiceProvider {

    /**
     * Bootstrap the application events.
     *
     * @return void
     */
    public function boot() {
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register() {
        App::bind( 'Settings', function () {
            return new \App\Helpers\Settings;
        });
    }  */
}

注册提供者(App\Providers\SettingsServiceProvider::class)

创建别名:'Settings' => App\Facades\Settings::class

运行composer dump-autoload

尝试使用门面Settings::getAll();

得到错误类'App\Http\Controllers\Settings' not found

不知道为什么我无法创建外观并收到该错误

【问题讨论】:

  • 是因为命名空间,试试:\Settings::getAll();
  • 类 'App\Facades\Settings' 未找到
  • App\Helpers\Facades\SettingsFacade.php 重命名为App\Helpers\Facades\Settings.php 有助于拨打电话\Settings::getAll(); 但我该如何拨打Settings::getAll(); 之类的电话
  • 如果你不想像Settings::getAll();那样称呼它,你需要在文件顶部添加use Settings

标签: php laravel laravel-5 laravel-5.4


【解决方案1】:

试试这个。

App\Helpers\Settings.php

namespace App\Helpers;
use Illuminate\Database\Eloquent\Model;
    class Settings {

        protected $settings = [];

        public function __construct() {

            $this->settings['AppName'] = 'Test';
        }

        /**
         * Fetch all values
         *
         * @return mixed
         */
        public function getAll () {
            return $this->settings;
        }
    }

App/Http/Controllers/XyzController.php

use Facades\App\Settings;
class XyzController extends Controller
{
     public function showView()
     {
         return Settings::getAll();
     }
}

web.php

Route::get('/','XyzController@showView');

use Facades\App\Helpers\Settings;

Route::get('/direct',function() {
    return Settings::getAll();
});

使用 laravel Real time facades

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2018-01-03
    • 2017-06-09
    • 2017-06-11
    • 2017-06-29
    • 1970-01-01
    • 2013-06-02
    • 2017-09-09
    相关资源
    最近更新 更多