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
或类似的)。
我有一个用户 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
或类似的)。