php – 将很多参数传递给parent :: __构造代码异味/差OOP?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 将很多参数传递给parent :: __构造代码异味/差OOP?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1535字,纯文字阅读大概需要3分钟。
内容图文
![php – 将很多参数传递给parent :: __构造代码异味/差OOP?](/upload/InfoBanner/zyjiaocheng/791/af899724e7a6426f874891469aac5319.jpg)
我正在写一些代码,我开始对凌乱的父:: __构造调用感到有点不舒服,我首先想知道它是不好的OOP练习,其次是有更清洁的方法吗?请参阅下面触发我的问题的特别极端的示例.
<?php
class BrowseNodeLookupRequest extends Request {
protected $BrowseNodeId;
public function __construct($Service, $AWSAccessKeyID, $AssociateTag,
$Operation, $MerchantID = null, $ResponseGroup = null,
$Version = null, $Style = null, $ContentType = null,
$XMLEscaping = null, $Validate = null, $BrowseNodeId) {
parent::__construct($Service, $AWSAccessKeyID, $AssociateTag,
$Operation, $MerchantID, $ResponseGroup, $Version, $Style,
$ContentType, $XMLEscaping);
$this->setBrowseNodeId($BrowseNodeId);
}
protected function setBrowseNodeId($BrowseNodeId) {
if (is_string($BrowseNodeId)) {
$this->BrowseNodeId = $BrowseNodeId;
} else {
throw new Exception('BrowseNodeLookupRequest Parameter (BrowseNodeId
) Must be a String');
}
}
}
?>
解决方法:
对任何函数都有许多参数是不好的做法,无论是__parent :: construct还是not.
它太容易搞砸了,特别是在PHP中.很多时候,这表明您缺少物体(或者部件之间的耦合太紧).如果你不能提出任何其他缺失的对象,我甚至更愿意传递一个“配置”对象.
class ConfigFoo
{
public $Service, $AWSAccessKeyID, ..., $foo, $bar;
}
$cfg = new ConfigFoo();
$cfg->Service = 'whatever';
...
$req = new BrowseNodeLookupRequest($cfg);
这基本上是一种传递参数数组的更结构化的方法.配置对象可以扩展其他配置对象以跟随其他对象.
当然,课程可以比简单的公共属性更先进.您可以管理数据完整性等.
需要明确的是:除非a)没有其他缺少的中间对象,否则我不会诉诸上述内容; b)有足够数量的参数使得使用简单数组就像一长串函数参数一样有问题.
内容总结
以上是互联网集市为您收集整理的php – 将很多参数传递给parent :: __构造代码异味/差OOP?全部内容,希望文章能够帮你解决php – 将很多参数传递给parent :: __构造代码异味/差OOP?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。