php – 在构造函数中最好不要做什么?

栏目: PHP · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/524647/what-things-are-best-not-done-in-a-constructor
我首先提出了一个问题:“在构造函数上执行单元测试的最佳方法是什么(例如, PHP

5中的__construct())”,但在阅读相关问题时,我看到几条评论似乎表明设置成员变量或在构造函数中执行任何复杂的操作都是no-nos.

这里讨论的类的构造函数接受一个参数,对它执行一些操作(确保它通过嗅探测试,并在必要时进行转换),然后将其存储在成员变量中.

我认为这样做的好处是:

1)客户端代码永远是

肯定有这个价值

每当一个对象成员变量

这个类的实例化,和

2)它在客户端代码中保存了一个步骤

(其中一个可以想象得到

错过了,例如,

$Thing = new Thing;
$Thing->initialize($var);

什么时候我们可以做到这一点

$Thing = new Thing($var);

并完成它.

这是不是吗?如果是这样的话?

这在C讨论中出现了很多,我得到的一般结论是这样的:

如果对象没有获取任何外部资源,则必须在构造函数中初始化成员.这涉及在构造函数中完成所有工作.

>(x,y)坐标(或者实际上任何其他只是一个美化元组的结构)

>美国州名缩写查找表

如果对象获取了它可以控制的资源,则可以在构造函数中分配它们:

>打开文件描述符

>分配内存

>处理/指针到外部库

如果对象获取了无法完全控制的资源,则必须在构造函数之外分配它们:

> TCP连接

>数据库连接

>弱参考

总有例外,但这涵盖了大多数情况.

翻译自:https://stackoverflow.com/questions/524647/what-things-are-best-not-done-in-a-constructor


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析(Java版)(英文原版)

数据结构与算法分析(Java版)(英文原版)

(美)Clifford A.Shaffer / 电子工业出版社 / 2002-5 / 39.00元

《数据结构与算法分析(C++版)(第2版)》采用程序员最爱用的面向对象C++语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种类型的数据结构和排序、检索的各种方法。作者非常注意对每一种数据结构的不同存储方法及有关算法进行分析比较。书中还引入了一些比较高级的数据结构与先进的算法分析技术,并介绍了可计算性理论的一般知识。本版的重要改进在于引入了参数化的模板,从而提......一起来看看 《数据结构与算法分析(Java版)(英文原版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具