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

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

内容简介:翻译自: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


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

查看所有标签

猜你喜欢:

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

The Filter Bubble

The Filter Bubble

Eli Pariser / Penguin Press / 2011-5-12 / GBP 16.45

In December 2009, Google began customizing its search results for each user. Instead of giving you the most broadly popular result, Google now tries to predict what you are most likely to click on. Ac......一起来看看 《The Filter Bubble》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具