Вот как я создаю помощника (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
Не могу понять, почему я не могу создать фасад и получаю эту ошибку
Класс "Приложение \ Фасады \ Настройки" не найден
переименование App\Helpers\Facades\SettingsFacade.php
в App\Helpers\Facades\Settings.php
помогает вызвать вызов \Settings::getAll();
, но как мне вызвать, как Settings::getAll();
если вы не хотите называть его как Settings::getAll();
, вам нужно добавить use Settings
в начало файла.
Попробуй это.
Приложение \ 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;
}
}
Приложение / HTTP / Контроллеры / 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 Фасады в реальном времени
это из-за пространств имен, попробуйте:
\Settings::getAll();