Php Laravel-在自己的类中使用存储库
在Laravel4中,我有几个接口,它们当前绑定到雄辩的存储库。在我的控制器中,我会:Php Laravel-在自己的类中使用存储库,php,laravel,repository-pattern,Php,Laravel,Repository Pattern,在Laravel4中,我有几个接口,它们当前绑定到雄辩的存储库。在我的控制器中,我会: use Acme\Repositories\User\UserRepository; class UserController extends BaseController { /** * @var UserRepository */ protected $users; public function __construct(UserRepository $
use Acme\Repositories\User\UserRepository;
class UserController extends BaseController {
/**
* @var UserRepository
*/
protected $users;
public function __construct(UserRepository $users)
{
$this->users = $users;
}
然后,我可以访问我的自定义方法,使用Elounting获取数据
然而,在我自己的课堂上,我如何做到这一点
use Acme\Repositories\Notification\NotificationRepository;
use Acme\Services\ServiceInterface;
class HipChatService implements ServiceInterface {
protected $notifications;
public function __construct(NotificationRepository $notifications)
{
$this->notifications = $notifications;
}
要在路线中进行测试:
use Acme\Services\HipChat\HipChatService;
Route::get('hipchat', function()
{
$h = new HipChatService();
});
然后我得到一个错误:
传递给Acme\Services\HipChat\HipChatService::\uu construct()的参数1必须是Acme\Repositories\Notification\NotificationRepository的实例,未给出任何实例
现在我明白了为什么会发生这种情况,但是我应该如何在自己的类中使用存储库呢?我如何才能调用控制器+方法而不发生这种情况
干杯如果你想让Laravel解决你的依赖关系,你必须用
App::make
来构建你的对象,而不是用new手动实例化
$myInstance = App::make('Acme\Services\HipChat\HipChatService');
我对Laravel真的很陌生,但我认为你的问题可能是你必须通过发送一个
NotificationRepository
实例来绑定HipChatService
的实例化,然后IoC将发挥神奇的作用。无论如何,只要阅读代码,就好像无法以这种方式调用构造函数,$notifications
参数是必需的。