Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.10.2018 20:37:07

Не работает сервис-провайдер

Сделал провайдер, добавил его в app.php в provider

<?php

namespace App\Providers;

use App\Orc;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //

        $this->app->bind('App\Orc', function ($app) {

            $n = new Orc(10000);
            $n->lvl = 999;
            return  $n;
        });

    }
}

Класс из провайдера

<?php

namespace App;

class Orc 
{
    public $lvl = 6;

    function  __construct($n=10){
       $this->lvl = $n;
    }

    public function doSomethingUseful(){

    }
}

Контроллер

Route::get('mmmm', function (\App\Orc $orc) {
   dd($orc);
});

И оно не работает, то есть сервис провайдер не перехватывает создание экземпляра.

Также пробывал наследовать класс от интерфейса, как тут
https://code.tutsplus.com/ru/tutorials/ … -cms-28966
CustomServiceInterface

Но получал ошибку, хотя пространства имён и физ расположение файлов написал верно.

Target [App\OrcInt] is not instantiable.

п.с я думал, что сервис провайдер нужен именно для того, что бы быть препроцессором перед созданием экземпляров классов(и переопределять классы), но, похоже, я совсем не понял в чём суть всей этой абстракции. Так ли часто вообще используются сервис-провайдеры в реальных проектах?

Не в сети

#2 12.10.2018 10:04:14

Re: Не работает сервис-провайдер

Просто надо было почистить кеш конфигов php artisan config:cache

Не в сети

Подвал раздела