<?php
header("Content-type: text/html; charset=utf-8");
class Person
{
}
class Ming extends Person
{
private $_name;
private $_age;
private $_phone;
public function __construct($phone)
{
$this->_name = '小明';
$this->_age = 26;
$this->_phone = $phone;
echo "小明起床了 \n";
}
function read()
{
//…… 省略若干代码
$this->_phone->read($this->_name); //逛知乎
}
function play()
{
//…… 省略若干代码
(new iPhone6())->play($this->_name);//玩农药
}
function grab()
{
//…… 省略若干代码
(new iPhone6())->grab($this->_name);//抢红包
}
}
$phone = new IphoneX(); //创建一个iphoneX的实例
if(!method_exists($phone,'li')){//如果iphone不可用,则使用旧版手机
$phone = new Iphone6();
}
$ming = new Ming($phone);//小明不用关心是什么手机,他只要玩就行了。
$ming->read();
class Iphone{}
class iPhone6 extends Iphone
{
function read($user = "某人")
{
echo $user. "打开了知乎然后编了一个故事 \n";
}
function play($user = "某人")
{
echo $user. "打开了王者农药并送起了人头 \n";
}
function grab($user ="某人")
{
echo $user. "开始抢红包却只抢不发 \n";
}
}
class iPhoneX extends Iphone
{
function li(){}
function read($user = "某人")
{
echo $user. "xxxx打开了知乎然后编了一个故事 \n";
}
function play($user = "某人")
{
echo $user. "xxx打开了王者农药并送起了人头 \n";
}
function grab($user ="某人")
{
echo $user. "xxx开始抢红包却只抢不发 \n";
}
}
如何用最简单的方式解释依赖注入代码部分
最新推荐文章于 2024-09-23 16:42:12 发布
本文通过一个PHP示例展示了依赖注入的概念,小明类(Ming)不直接创建手机对象,而是通过构造函数接收一个手机实例,实现了代码的解耦。无论是iPhone6还是iPhoneX,小明都可以正常操作,如阅读、玩游戏和抢红包。依赖注入允许在运行时更换不同的手机类,提高了代码的灵活性和可测试性。
摘要由CSDN通过智能技术生成