我试图更好地了解Services Container在Laravel中的运作方式。所以我知道服务习惯用Laravel设置你想要使用的东西,对吗?
我试图使用LDAP php内置函数创建一个简单的示例。我在AppServiceProvider.php
:
public function register()
{
$this->app->bind('ldap', function() {
$conn = ldap_connect(env('LDAP_HOST'));
ldap_bind($conn, env('LDAP_BIND'), env('LDAP_PWD'));
return $conn;
});
}
然后在我的控制器中我尝试$ldap = resolve('ldap');
但它没有工作,它说resolve
不存在。我已经尝试了$this->app->make
。我如何恢复LDAP连接?
答案 0 :(得分:2)
在Laravel 5.3之前,未添加resolve()
辅助方法。听起来你没有使用5.3。
无论如何,所有resolve()
帮助器方法都会调用app()
辅助方法。您可以继续使用app()
帮助程序方法来解析容器外的依赖关系。
$ldap = app('ldap');
如果您更喜欢这种方法,也可以使用App
外观。
$ldap = App::make('ldap');
如果您已注入$this->app->make()
绑定已注册的Application
容器对象,则您只能使用控制器中的ldap
。
答案 1 :(得分:0)
不是通过使用函数解析类,我通常更喜欢在任何参数之前在Controller构造函数或路由函数中注入它。
class Controller
{
[...]
public function __construct(Class $class)
{
$this->class = $class;
}
public function authenticate(Class $class)
{
$this->class->foo(); // I work!
$class->foo(); // I work too, yay!
}
[...]