问答 / 0 / 9 / 创建于 3年前
忽然想起来这个问题,找不到一个无错的答案,特此求教大家,谢谢
什么意思,示例代码?
说的是8.1版本的特性吧
不好意思是我没说清楚,请看一下我新上传的示例代码
DateTimeInterface
这是契约也叫接口,相当于现实中的合同,保证类中的 serializeData 方法传入的参数必须实现 DataTimeInterface中的接口,否则不能保证 return $data->format('Y-m-d'); 这段代码的正确。
serializeData
DataTimeInterface
return $data->format('Y-m-d');
而且这个对象还能做一些事情
实际上这个对象能做的事情是DataTimeInterface 里规定的方法
再打个比喻,serializeData 方法假如要播放一个视频,那接收参数必须实现了播放功能,不管你是qq播放器还是迅雷播放器,如果没有实现这个契约的,就会报错。
// 假如这是播放器的契约,必须实现播放功能 interface DataTimeInterface { public function format(string $f); } // qq播放器必须实现契约,否则就会报错 class DateTimeFormat implements DataTimeInterface { public function format(string $f){ return date($f, time()); } } // qq播放器符合契约,合格 var_dump( (new DateTimeFormat) instanceof DataTimeInterface);// true
serializeData(DataTimeInterface $data) 就是一种写法,DataTimeInterface 相当于播放器接口(或契约),$data 就是qq播放器或者什么播放器,传入一个记事本肯定会报错。可以再打个比喻,一个笔记本电脑厂家,不可能所有零件都自己生产吧,会从各个厂家购买,购买的零件能不能用? 你不得说明规格啥的,和这里是一样的。
serializeData(DataTimeInterface $data)
$data
我要举报该,理由是:
什么意思,示例代码?
说的是8.1版本的特性吧
这是契约也叫接口,相当于现实中的合同,保证类中的
serializeData
方法传入的参数必须实现DataTimeInterface
中的接口,否则不能保证return $data->format('Y-m-d');
这段代码的正确。实际上这个对象能做的事情是
DataTimeInterface
里规定的方法再打个比喻,
serializeData
方法假如要播放一个视频,那接收参数必须实现了播放功能,不管你是qq播放器还是迅雷播放器,如果没有实现这个契约的,就会报错。serializeData(DataTimeInterface $data)
就是一种写法,DataTimeInterface
相当于播放器接口(或契约),$data
就是qq播放器或者什么播放器,传入一个记事本肯定会报错。可以再打个比喻,一个笔记本电脑厂家,不可能所有零件都自己生产吧,会从各个厂家购买,购买的零件能不能用? 你不得说明规格啥的,和这里是一样的。