PHP-构造函数与过于怪异的许多获取和设置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-构造函数与过于怪异的许多获取和设置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1818字,纯文字阅读大概需要3分钟。
内容图文
我有一个具有18个属性的记录类.
在将该类提交到数据库之前,所有18个属性必须具有经过验证的数据.
因为我正在OOP验证一个正在运行的程序Webapp,所以我进行了这种倒退.
首先,我介绍了用于修改现有记录的工作流程.当时,将所有18个属性都放入__construct方法中是有道理的,避免了大量的setter.单独的加载程序类处理dbase业务,并且可以返回单个对象或记录对象数组.一切正常.
但是到了解决新记录创建工作流程的时候了,突然我需要实例化一个空记录,除了我的记录构造函数是一个饥饿的野兽,需要18个参数…
…所以剥离了构造函数?但是然后我必须添加18个setter并在每次我想使用现有记录时都调用它们…
似乎没有太大的改善! :-/
真正的程序员该如何处理? (我只是一个业余爱好者…)
解决方法:
缺省参数都是一个选项,但是如果您只想使用第一个和最后一个,则必须填写大量的null.
再一次,您可以进行数组循环:
private $prop1;
private $prop2;
// more properties here.
function __construct( array $props ) // `array` here is for type-hinting.
{
foreach( array( 'prop1', 'prop2' /*, all of the props for this object */
as $property )
{
// basically, this will assign all of the properties as they exist in the
// props array
if( isset( $props[ $property ] ) )
$this->$property = $props[ $property ];
}
}
或者,如果您想保留旧的构造函数签名:
function __construct( $prop1, $prop2 = NULL, $prop3 = NULL /* ... */ )
{
if( is_array( $prop1 ) )
{
$this->array_prop_assignment( $prop1 );
}
else
{
$args = func_get_args();
// this ensures that anything which is passed to the constructor
// will go to the "new" old constructor
call_user_func_array( array( $this, 'param_prop_assignment' ), $args );
}
}
function param_prop_assignment( $prop1, $prop2 /* ... */ )
{
//your old constructor can go here.
}
function array_prop_assignment( array $props )
{
// foreach example above would go here.
}
新版本还提供了以下选项:
$k = new DataClass(); // no idea what the real class name is.
$k->param_prop_assignment( 1, 2, 3 /* ... */ );
内容总结
以上是互联网集市为您收集整理的PHP-构造函数与过于怪异的许多获取和设置全部内容,希望文章能够帮你解决PHP-构造函数与过于怪异的许多获取和设置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。