Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:这些术语, 听上去就高逼格, 其实并不难, 是吧?
//定义一个接口
interface iSetPseronInfo {
//设置
public static function setInfo($name, $sex, $age);
//新增
public function addData(array $data);
//更新
public function upData($source, $nvalue);
//查询
public function queData($seaValue);
//删除
public function delData($seaValue);
}
//定义一个实现类
class SetPseronInfo implements iSetPseronInfo
{
//定义一个空数组用来存储数据
public static $personInfo = [];
//设置
public static function setInfo($name, $sex, $age)
{
array_push(self::$personInfo, array($name, $sex, $age));
}
//新增
public function addData(array $data)
{
array_push(self::$personInfo, $data);
}
//更新
public function upData($source, $nvalue) {
foreach (self::$personInfo as &$value) {
$key = array_search($source, $value);
foreach ($value as $key1 => $ovalue) {
if ($key1 === $key) {
$value[$key1] = $nvalue;
}
}
}
}
//查询
public function queData($seavalue) {
foreach (self::$personInfo as &$value) {
$key = array_search($seavalue, $value);
foreach ($value as $key1 => $ovalue) {
if ($key1 === $key) {
return array_slice($value, $key1);
}
}
}
}
//删除
public function delData($svalue) {
foreach (self::$personInfo as $value) {
if (in_array($svalue, $value)){
$key = array_search($value, self::$personInfo);
unset(self::$personInfo[$key]);
}
}
}
}
//客户端代码
//设置
SetPseronInfo::setInfo('小明', '男', 18);
printf('<pre>1. 设置后此时的数据为<br>%s</pre>', print_r(SetPseronInfo::$personInfo, true));
//新增
(new SetPseronInfo)->addData(['小红', '女', 17]);
(new SetPseronInfo)->addData(['小王', '男', 19]);
(new SetPseronInfo)->addData(['小倩', '女', 18]);
printf('<pre>2. 新增后此时的数据为<br>%s</pre>', print_r(SetPseronInfo::$personInfo, true));
//更新
(new SetPseronInfo)->upData('小红', '小雪');
printf('<pre>3. 更新后此时的数据为<br>%s</pre>', print_r(SetPseronInfo::$personInfo, true));
//查询
printf('<pre>4. 查询的数据为<br>%s</pre>', print_r( (new SetPseronInfo)->queData('小雪'), true));
//删除
(new SetPseronInfo)->delData('小王');
printf('<pre>5. 删除后此时的数据为<br>%s</pre>', print_r(SetPseronInfo::$personInfo, true));
//定义第一个接口
interface iSetPersonInfo {
//设置
public static function setInfo($name, $sex, $age);
}
//定义第二个接口
interface iCRUD {
//新增
public function addData(array $data);
//更新
public function upData($source, $nvalue);
//查询
public function queData($seaValue);
//删除
public function delData($seaValue);
}
//定义第三个接口继承自第一和第二个接口
interface iPerson extends iSetPersonInfo, iCRUD {}
//定义一个实现类
class Pseron implements iPerson {
//定义一个空数组用来存储数据
public static $personInfo = [];
//设置
public static function setInfo($name, $sex, $age)
{
array_push(self::$personInfo, array($name, $sex, $age));
}
//新增
public function addData(array $data)
{
array_push(self::$personInfo, $data);
}
//更新
public function upData($source, $nvalue) {
foreach (self::$personInfo as &$value) {
$key = array_search($source, $value);
foreach ($value as $key1 => $ovalue) {
if ($key1 === $key) {
$value[$key1] = $nvalue;
}
}
}
}
//查询
public function queData($seavalue) {
foreach (self::$personInfo as &$value) {
$key = array_search($seavalue, $value);
foreach ($value as $key1 => $ovalue) {
if ($key1 === $key) {
return array_slice($value, $key1);
}
}
}
}
//删除
public function delData($svalue) {
foreach (self::$personInfo as $value) {
if (in_array($svalue, $value)){
$key = array_search($value, self::$personInfo);
unset(self::$personInfo[$key]);
}
}
}
}
//客户端代码
//设置
Pseron::setInfo('小明', '男', 18);
printf('<pre>1. 设置后此时的数据为<br>%s</pre>', print_r(Pseron::$personInfo, true));
//新增
(new Pseron)->addData(['小红', '女', 17]);
(new Pseron)->addData(['小王', '男', 19]);
(new Pseron)->addData(['小倩', '女', 18]);
printf('<pre>2. 新增后此时的数据为<br>%s</pre>', print_r(Pseron::$personInfo, true));
//更新
(new Pseron)->upData('小红', '小雪');
printf('<pre>3. 更新后此时的数据为<br>%s</pre>', print_r(Pseron::$personInfo, true));
//查询
printf('<pre>4. 查询的数据为<br>%s</pre>', print_r( (new Pseron)->queData('小雪'), true));
//删除
(new Pseron)->delData('小王');
printf('<pre>5. 删除后此时的数据为<br>%s</pre>', print_r(Pseron::$personInfo, true));
//定义一个用户查询接口
interface iUser {
//定义构造方法:用于初始化对象属性
public function __construct(...$params);
//定义抽象方法:用于获取用户信息
public function getUserInfo ();
}
//定义第一个实现类:获取普通用户的信息
class ComUser implements iUser {
//定义一个受保护属性:用于
public static $id = null;
//实现接口的构造方法
public function __construct(...$params) {
list($name, $sex, $age, $id) = $params;
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
self::$id = $id;
}
//实现接口的抽象方法
public function getUserInfo () {
return '姓名:'.$this->name.' '.'性别:'.$this->sex.' '.'年龄:'.$this->age.' '.'会员状态:'.(self::$id ? '是会员' : '不是会员');
}
}
//定义第二个实现类:获取会员用户的信息
class PlusUser implements iUser {
//定义一个受保护属性:用于
public static $id = null;
//实现接口的构造方法
public function __construct(...$params) {
list($name, $sex, $age, $id) = $params;
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
self::$id = $id;
}
//实现接口的抽象方法
public function getUserInfo () {
return '姓名:'.$this->name.' '.'性别:'.$this->sex.' '.'年龄:'.$this->age.' '.'会员状态:'.(self::$id ? '是会员' : '不是会员');
}
}
/*$p1 = new ComUser('小明', '男', 18, 0);
echo $p1->getUserInfo();
echo ComUser::$id;
echo '<br>';
$p2 = new PlusUser('小红', '女', 17, 1);
echo $p2->getUserInfo();
echo PlusUser::$id;*/
//定义一个通用工作类:当传进去的参数为不同的账户时,调用不同账户的相同的方法名,产生不同的效果
class User {
public function clearP($p) {
return $p->getUserInfo();
}
}
//客户端代码
//实例化通用工作类
$p = new User;
//普通成员
$p1 = new ComUser('小明', '男', 18, 0);
echo $p->clearP($p1);
echo '<br>';
//会员
$p2 = new PlusUser('小红', '女', 17, 1);
echo $p->clearP($p2);