【发布时间】:2016-01-13 05:13:51
【问题描述】:
如何实现 laravel 合约和服务提供者?
我有一个类 Cart 和它的方法 purchase ,这个类当然会包含我的大多数控制器都依赖的程序结构。 如何在其他控制器中有效管理此类的依赖注入?
【问题讨论】:
如何实现 laravel 合约和服务提供者?
我有一个类 Cart 和它的方法 purchase ,这个类当然会包含我的大多数控制器都依赖的程序结构。 如何在其他控制器中有效管理此类的依赖注入?
【问题讨论】:
您可以简单地将类引用为控制器中的依赖项。即使您不使用接口,它也会被实例化。
<?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 用于类等等......我对存储库的做法不同。也想知道吗?