php – 父类引用仅存在于子代中的属性是否合适?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 父类引用仅存在于子代中的属性是否合适?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1030字,纯文字阅读大概需要2分钟。
内容图文
![php – 父类引用仅存在于子代中的属性是否合适?](/upload/InfoBanner/zyjiaocheng/798/8bc999459c1746bc9cdf327a80c38b2c.jpg)
在我的团队正在进行的项目中,我们正在修改商业PHP应用程序.该应用程序散布着代码,其中父类检查并使用父类中不存在的属性,如下所示:
class A
{
function doSomething()
{
if (property_exists($this, 'some_property'))
{
$this->some_property = $_REQUEST['val'];
}
}
}
class B extends A
{
protected $some_property;
function doSomething()
{
parent::doSomething();
}
}
不得不修改这段代码,我们觉得很脏;这是正确的设计吗?有什么方法(除了显而易见的)可以避免这样的事情?
解决方法:
依赖于子类中必须存在的方法并不脏,只要您可以将它们声明为抽象.
但是,依靠和操纵类之外的属性并不是一种好的做法.最好使用抽象setter,如下所示:
abstract class A
{
abstract protected function setSomeProperty($data);
public function doSomething()
{
$this->setSomeProperty($_REQUEST['val']);
}
}
class B extends A
{
private $some_property;
public function doSomething()
{
parent::doSomething();
}
protected function setSomeProperty($data)
{
$this->some_property = $data;
}
}
但是,既然你说你不允许修改父类,我建议你创建一个子类,作为父类“期望”的Adapter,以及一个你能够“正确”设计的类.
内容总结
以上是互联网集市为您收集整理的php – 父类引用仅存在于子代中的属性是否合适?全部内容,希望文章能够帮你解决php – 父类引用仅存在于子代中的属性是否合适?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。