【问题标题】:Laravel Contracts Vs Service providersLaravel 合约与服务提供者
【发布时间】:2016-01-13 05:13:51
【问题描述】:

如何实现 laravel 合约和服务提供者?

我有一个类 Cart 和它的方法 purchase ,这个类当然会包含我的大多数控制器都依赖的程序结构。 如何在其他控制器中有效管理此类的依赖注入?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    您可以简单地将类引用为控制器中的依赖项。即使您不使用接口,它也会被实例化。

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Users\Repository as UserRepository;
    
    class UserController extends Controller
    {
        /**
         * The user repository instance.
         */
        protected $users;
    
        /**
         * Create a new controller instance.
         *
         * @param  UserRepository  $users
         * @return void
         */
        public function __construct(UserRepository $users)
        {
            $this->users = $users;
        }
    }
    

    如果您要使用接口,只需确保您的类实现了它,然后在您的任何服务提供者中调用 app 实例中的 bind 方法即可。

    $this->app->bind(UserRepository::class, EloquentUserRepository::class);
    

    【讨论】:

    • 我应该在哪个目录放置类文件或合同文件,即您的示例中的这一行use App\Users\Repository as UserRepository;
    • 我个人更喜欢app/Modules/Mailing/Contracts/Mailer 用于接口,app/Modules/Mailing/PHPMailMailer 用于类等等......我对存储库的做法不同。也想知道吗?
    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2015-10-24
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多