PHP - 让您的类完成所有工作而不对使用该类的脚本做太多工作是否可以?

标签 php oop class

<分区>

这只是一个意见问题,但我不想引起争论。我只想要专业的反馈,让您的类完成所有工作到您只需要实例化对象的地方是好的做法还是坏的做法。如果一切顺利,那么您可以在类里面执行下一步,无论它在您的应用程序中是什么。如果出现问题,您还可以创建一个函数来在类中发出错误。

我使用神奇的 __construct 方法完成所有这些,并且我的所有属性都是私有(private)的(如果我需要扩展某些东西,或者是 protected )...我的大部分方法也是私有(private)的/ protected ,除了我的 getter 和 setter无论如何不要用太多,因为一切都发生在类里面。

例如,我有一个登录类,您只需在实例化时将用户名和密码参数提供给它,一切都发生在 __construct 上,我不需要对使用该类的脚本做任何事情。另外...与我的注册类(class)相同..您只需再次为其提供参数,该类(class)就会完成所有工作。我根本不需要用脚本来操纵我的类(class)。

好的做法还是坏的做法?我想成为一名专业人士,我想像一个人一样开始编码,但也许我做得还不错?

最佳答案

我投票决定结束这个,因为它可能会引发一场相对无用的辩论。

不管怎么说,关于构造函数有两大理论:单阶段和多阶段。你在做单阶段。许多人主张单级。但是,我认为这是不好的做法。为什么?

因为它使测试变得更加困难。当您编写测试时,您想要测试一个对象的各个功能..但是如果您的构造函数做了一切,那将变得不可能。

这也使得以后为了不同的目的重用该对象变得更加困难。您的对象可能会执行您需要它执行的所有操作,除了在构造函数中调用一个额外的方法——因此现在您必须稍微重写它并至少在几个地方更改它的调用方式。

真正的答案是在您的项目范围内做您最擅长的事情。

关于PHP - 让您的类完成所有工作而不对使用该类的脚本做太多工作是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797556/

相关文章:

php - 在 CodeIgniter 中为 ( :any)

php - 不同城市的不同子域

javascript匿名函数作用域

java - 有一个不实例化对象的静态类是不好的做法吗

c# - 为什么要创建一个具有所有静态属性的公共(public)类?

php - 多个 session 在 codeigniter 中不起作用

PHP - 对象实例化上下文 - 奇怪的行为 - 是 PHP 错误吗?

javascript - 无法读取未定义的属性 '-1'

c++ - 在类中使用 union

javascript - 如何设置属于基类[继承]的子类对象的属性(属性)? (将 Base 的属性传递给 Child)