【发布时间】:2016-05-22 21:26:31
【问题描述】:
我在解决 Zend Framework 1.x 中的限制时遇到了问题,我目前无法替换或更新它。我有一个新颖的想法,但不确定是否可行。
基本问题是是否可以实例化一个扩展的子对象,然后提取父对象进行序列化?
为了说明原因,基本上Zend_Mail 类有一些非常愚蠢的限制和对其方法的类型检查,在我的例子中特别是$mail->setType()。
我的想法是我可以创建一个扩展类(My_Zend_Mail extends Zend_Mail),然后在我的类中覆盖setType() {...} 方法,消除限制,允许我在Zend_Mail 类中设置某些protected 属性。限制是我需要将它作为序列化对象传递给远程服务器,并且远程服务器在未序列化时将不会拥有或识别My_Zend_Mail 类。所以我只需要序列化最后的 Zend_Mail 父级。
回到最初的问题,在通过扩展子对象实例化后,我可以提取父对象吗?
编辑:我发现了以下问题,其选择的答案提出了一种 hackish 方式来重新转换序列化字符串,以便将其反序列化为不同的对象......
Convert/cast an stdClass object to another class
这可能有效,但在更下方看起来有人也在通过 Reflection 类执行此操作,这更接近我正在寻找的内容。除非有其他建议,否则我可能会试一试并报告回来?
【问题讨论】:
-
对不起,我不认为你可以。要获取父对象,您需要实例化父类。但是,您应该可以通过使用“parent::example()”从子对象访问父方法和属性,例如调用父“示例”方法。
-
对不起@CatalinCislariu,但很明显我可以访问父属性和方法......这就是我提出它的原因。就能够重新转换或提取父级而言,您是否可以参考任何导致您得出该结论的内容?
-
我错了,看底部。
-
@CatalinCislariu 是的,我把它放在那里,这是我的问题?!?!无论如何,反射类解决方案奏效了,我已邀请该用户在这里回答。
标签: php zend-framework serialization parent-child extends