PHP OOP -> __construct 中的 if 语句 vs 直接调用函数(性能和未来)

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

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

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

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

并继续像 class 的其他方法一样。所以我的问题是:

这是处理这些事件的好方法还是做类似的事情会更好:

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

我所说的更好是指性能方面和未来可能出现的陷阱。

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

提前谢谢你 - 我刚刚开始学习 PHP 所以我对我所做的任何事情都不确定。

有一百万种方法可以解决这个问题。我个人在我的用户 class 中使用了一个功能:

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

然后将更新任何不为空的字段。

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

想象一下,稍后您将不得不编写管理用户的命令行脚本。如果您保持 User 界面干净的 Web 逻辑,您可以在此脚本中重用它,只需更改控制器(将 $_POST[xxx] 替换为 $argv 或类似的)。