脚本宝典收集整理的这篇文章主要介绍了php – 区分哪些参数属于哪个对象,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
abstract class Event{ PRotected $cost; protected $startTime; public function __construct(){ foreach($eventData as $key => $val){ if(proPErty_exists($this,$key)){ $this->$key = $val; } } } }
和
class Party extends Event{ private $hasPointyhats; public function __construct($eventData){ parent::__construct($eventData); $this->hasPointyHats = $eventData->hasPointyHats; } }
Class Event有2个道具:cost和startTime.构造时,应该传递一个包含事件所有参数的关联数组,它会自动将该属性设置为传递的数组值.
Class Party通过确定此事件是否具有那些令人敬畏的尖端派对帽来扩展事件(如果不是,我就不会去).
和不.不,不.因为当您传递此对象时:
//Some result set... $MysqLi_result = $result->fetch_assoc();
它有cost,startTime和hasPointyHats值(可能更多!),你得到以下小错误:
Fatal error: Cannot access private property Party::$hasPointyHats in C:\somePath\Event.PHP on line 35
我理解为什么.因为在“事件”中,$this指的是“派对”对象,但它是私有的.
我不打算覆盖超级构造函数中对象中的每个属性,只是属于超类(抽象类Event)本身的属性.有没有办法定位Event类的特定属性而不是子类的特定属性?这样,无论我用什么对象扩展它,我都不会意外地在子类上设置属性,因为传递的对象有一些冲突的属性?
我认为这是一些非常容易的事情,比如super->属性或其他什么,但我仍然需要使用property_exists.
提前感谢您的帮助.
abstract class Event{ protected $cost; protected $startTime; public function __construct($eventData){ foreach($eventData as $key => $val){ if(property_exists(__CLASS__,$key)){ $this->$key = $val; } } } }
以上是脚本宝典为你收集整理的php – 区分哪些参数属于哪个对象全部内容,希望文章能够帮你解决php – 区分哪些参数属于哪个对象所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。