PHP OOP -> if 语句在 __construct 与直接调用函数(执行和未来)


PHP OOP -> if statements in __construct vs calling functions direcly (performane and future)

>我有一个用户类,它有用户名,电子邮件和用户级别,它有ChangePassword,ChangeEmail,ChangeUserLevel,DeleteUser和Adduser等方法。

目前,该类根据发布到具有$user = new User(name,email,secure_level)的页面的数据执行它需要执行的任何操作。因此,例如,如果您已将更改密码表单提交到具有实例化用户对象的页面__construct它有几个 if 语句 ->例如:

If ($_POST['changePassword']) {
    $this -> changePassword(); }

并像该类的其他方法一样继续这样做。所以我的问题是:

这是处理这些事件的好方法,还是最好执行以下操作:

$user = new User(name,email,secure_level);
if ($_POST['changePassword']) {
   $user->changePassword(); }

更好的我的意思是性能明智和未来可能的陷阱。

(我有以类似方式组织的登录类、注册类和网页类)

提前谢谢你 - 我刚刚开始学习PHP,所以我不确定我做什么。

是的,第二个选项更好。 User是一个模型类(业务逻辑抽象),因此不应该直接与 Web 请求($_POST和朋友)交互,这是控制器的任务,而不是模型的任务。

想象一下,在稍后的某个时候,您必须编写一个管理用户的命令行脚本。如果使接口User没有 Web 逻辑,则可以在此脚本中重用它,只需更改控制器(将$_POST[xxx]替换为 $argv 或类似

)。

有一百万种方法可以做到这一点。我个人在我的用户类中使用了一个函数:

updateUser($username = null, $password = null, $email = null)

然后,任何非空字段都将被更新。