众所周知 Laravel 的文档对于依赖注入只写了如何使用,相信大多数人对于他的实现原理并不太清楚。虽然使用过程中并不需要关心她的原理,但是了解原理让你使用起来更自信。这个帖子就通过一个小 demo 来简述实现原理,demo 如下,该 demo 可直接运行:
本文只是为了转载好文, 原文在此
namespace Database;
use ReflectionMethod;
class Database
{
protected $adapter;
public function __construct()
{
}
public function test(MysqlAdapter $adapter)
{
$adapter->test();
}
}
class MysqlAdapter
{
public function test()
{
echo "i am MysqlAdapter test";
}
}
class app
{
public static function run($instance, $method)
{
if (!method_exists($instance, $method)) {
return null;
}
//ReflectionMethod::__construct — Constructs a ReflectionMet