Laravel по-русски

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

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

#1 20.11.2017 16:55:54

method_exists вместо метода в предке

Можете объяснить сакральный смысл следующего?

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     */
    public function boot()
    {
        // ...
    }

    /**
     * Register any application services.
     */
    public function register()
    {
        // ...
    }
}

С точки зрения ООП, полиморфизма и всего такого, базовый класс ServiceProvider должен был бы содержать методы boot() и register(), пускай и пустые. И в нужный момент запускать `$provider->boot()`, не задумываясь, переопределён ли метод в потомке или нет.

Но этих методов в предке нет и вместо этого Laravel делает следующее (Illuminate\Foundation\Application):

    protected function bootProvider(ServiceProvider $provider)
    {
        if (method_exists($provider, 'boot')) {
            return $this->call([$provider, 'boot']);
        }
    }

И такое в очень многих местах.
Есть в этом какой-то смысл или скрытое преимущество?

Не в сети

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