【问题标题】:Laravel Service Container and Service ProviderLaravel 服务容器和服务提供者
【发布时间】:2019-05-29 19:46:16
【问题描述】:

需要通过一个例子来了解Laravel的服务容器和服务提供者。

【问题讨论】:

    标签: laravel laravel-5.7 laravel-service-container


    【解决方案1】:

    服务容器是注册服务的地方。

    服务提供者通过将服务添加到容器中来提供服务。

    参考 Laracast。注意了解。

    服务容器https://laracasts.com/series/laravel-from-scratch-2017/episodes/24

    服务提供商https://laracasts.com/series/laravel-from-scratch-2017/episodes/25

    【讨论】:

    • 谢谢! Laracasts 总是很棒 :)
    【解决方案2】:

    您好,欢迎来到 stackoverflow!

    服务容器是我们的应用程序bindings存储的地方。 服务提供者是我们将绑定注册到服务容器的类。在旧版本的 Laravel 中,我们没有这些提供程序,人们总是询问将绑定放在哪里。答案令人困惑。 “最有意义的地方。”!然后,Laravel 引入了这些 服务提供者Providers 目录来为人们理清思路。

    为了便于理解,我将包含一个基本示例:

    interface AcmeInterface {
        public function sayHi();
    }
    
    class AcmeImplementation implements AcmeInterface {
        public function sayHi() {
            echo 'Hi!';
        }
    }
    
    // Service Container
    $app = new \Illuminate\Database\Container;
    
    // Some required stuff that are also service providing lines 
    // for app config and app itself.
    
    $app->singleton('app', 'Illuminate\Container\Container');
    $app->singleton('config', 'Illuminate\Config\Repository');
    
    // Our Example Service Provider
    $app->bind(AcmeInterface::class, AcmeImplementation::class);
    
    // Example Usage:
    $implementation = $app->make(AcmeInterface::class);
    $implementation->sayHi();
    

    如你所见;

    • 首先我们创建容器(在现实生活中,Laravel 在 bootstrap/app.php 中为我们完成了这个工作),
    • 然后我们注册我们的服务(在我们的Service Provider类和config/app.php),
    • 最后,我们获得并使用我们注册的服务。 (在控制器、模型、服务中......)

    【讨论】:

    • 谢谢,希尔米真的很感激
    • @Ravinesh 乐于助人!如果您认为它对您有帮助,您可以接受答案。
    猜你喜欢
    • 2017-01-11
    • 2015-12-21
    • 1970-01-01
    • 2018-08-28
    • 2015-05-12
    • 2016-12-21
    • 2015-10-24
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多