>我有一个用户类,它有用户名,电子邮件和用户级别,它有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)
然后,任何非空字段都将被更新。