使用过 laravel 的同学应该对依赖注入,自动加载这些特性相当的了解,比如你自定义的类,传入 Interface 来实例化类对象,只需要在 AppServiceProvider 中添加即可,那么,在 laravel 之外,你可以使用 PHP-DI来完成这些工作。
依赖注入是个比较简单的概念,看下面这个例子体会.
<?phpuse App\User;class UserController{ protected $user; public function __construct (User $user) { $this->user = $user; }}
那么, UserController就依赖于 User 这个类,可能你需要这来实例化
new UserController(new User)
在 laravel 中,你的代码是这样的(joking)
new UserController
首先,使用 PHP-DI的容器来管理我们的类。这里有一个简单的例子, PHP-ID-example,这里还有一个简单的实现 http://rrylee.github.io/2015/09/23/laravel-container/#section-3
理解了依赖注入,容器等一些概念之后,就可以在项目中去使用了,官方给出了 Symfony2, Slim3等框架的详细的教程。可以自行参考。
配合 Slim 自身的 Container 使用起来真的很棒。
在 laravel 里面,你可以看到这种写法 User::class,这是 php5.5 开始提供的一个魔术关键字,用于获取类的全名(返回字符串),例子
<?phpuse App\Foo;echo Foo::class; // App\Foo