<?php //依赖注入练习; class Girl { public function work(){ return '会做饭'; } public function hobby(){ return '爱购物'; } } class Boy { public function getInfo(){ $girl = new Girl; return '我的女朋友'.$girl->work(); } } $boy = new Boy; echo $boy->getInfo(); echo '<hr>'; //依赖注入:用构造方法; // class Boy1 // { // //根据类Boy,因为类里面最好不要new 类,所以用这个方法代替; // private $girl = null; //容器; // public function __construct(Girl $girl){ // $this->girl = $girl; // } // public function getInfo(){ // return '我的女朋友'.$this->girl->work(); // } // } // $girl = new Girl; // $boy1 = new Boy1($girl); // echo $boy1->getInfo(); // echo '<br>'; // 依赖注入普通方法: class Boy2 { // Girl必须是一个实例; $girl.这个相当于参数传入;Girl这个对照着类名; public function getInfo(Girl $girl){ //getinfo里面的参数等于 $girl = new Girl; return '我的女朋友'.$girl->hobby(); } } $like= new Girl; //变量名可以随时改动 $boy2 = new Boy2; echo $boy2->getInfo($like); //变量名跟随实例化类的变量; echo '<br>';
依赖注入:在类外部实例化,然后当做参数传递到类里面;因为当做是变量传入,所以比较灵活,维护方便;
$girl.这个相当于参数传入;可以改变;Girl这个对照着类名,不允许随便改动;