老师能帮下我吗
请问错哪里了呢
和老师的代码一模一样的,
我复制下代码
<?php
namespace app\controllers;
use yii\base\Controller;
use yii\di\Container;
class DependencyController extends Controller{
public function actionIndex(){
$container = new Container;
$container->set('app\Controllers\Driver','app\Controllers\ManDriver');
$car = $container->get('app\Controllers\Car'); //因为上面已经指定了命名空间,所有的话这也要加上命名空间
//上面这个get方法实际上做了两件事如下注释的两件事,就是如果下面的car中的__construct()有传递ManDriver对象的情况下
// $driver = new ManDriver; //第一步是先实例化ManDriver
// $car = new Car($driver); //第二部是实例化Car对象
$car->run();
}
}
interface Driver{
public function drive();
}
class ManDriver implements Driver{ //继承Driver接口,目的是为了解决强关联
public function drive(){
echo "i am an old man!";
}
}
class Car{
private $driver = null;
public function __construct(Driver $driver){ //通过构造来传递司机对象,如果加了ManDriver对象实例这样传递会造成强关联
$this->driver = $driver;
}
public function run(){
$this->driver->drive();
}
}