【问题标题】:PHP confusion while building a script构建脚本时的 PHP 混淆
【发布时间】:2012-02-13 13:36:47
【问题描述】:

我面临一些困惑,因为我决定从程序转换为 oop,我发现它更有效。

所以无论如何我有一些问题希望我能在这里找到答案:)

假设我正在开发一个需要的 php 注册系统

1-注册过程 2-激活过程 3-登录过程(需要) 验证输入 验证会话等

问题是:我是否应该为每个进程创建一个类,或者我可以将它们全部组合成一个名为“User”的类,并提供登录、注册、激活等方法,或者我可以创建一个名为 USER 的类吗?有用户的属性,注册,登录类扩展它?

  1. 我应该为会话、验证等使用单独的类吗?或者只是在主类中正常检查

  2. 我应该将 ADMIN 类与普通类分开吗?意思是我有一个 USER 类,它有登录用户、注册用户等的方法,我应该为管理员添加更多功能,如删除用户、更新用户吗?或将其与普通类分开

【问题讨论】:

  • 请在您的英文中添加一些大写字母以表示您的关心。

标签: php oop


【解决方案1】:
  1. 您应该为login signup 等创建一个具有不同功能的User 类。

  2. 您应该将不同的功能分成尽可能多的类/对象,只要您觉得合适。例如,对于您的 User 类,您可能有一个 Session 类,您可以在您的 User 类中使用它来执行会话管理工作。您还可以创建一个 Person 继承自 User 的类。这可以具有printFullName 之类的功能,而User 类具有特定于身份验证的内容,例如login 和register。

  3. 同样,这取决于您。你想做什么,就可以做什么。我可能会有一个UserAdmin 类,它具有deleteUser($userid) 和editUser($userid) 之类的功能,因为它不会将它与事物的身份验证方面混淆。但是,它可以通过其他方式完成。您可以为特定用户调用User 对象并在其上调用deleteUser() 以删除该用户。它是您感觉最舒服的。

与我所有的答案一样,这是您想要做的。这没有标准,也没有规则。 OOP 主要是关于将所有内容分层以使其在结构上有意义,以及创建可重用的代码。

您想了解的另一件事是 MVC 编程。 MVC 代表模型、视图、控制器。在此设置中,您实际上不是按类别(例如用户、页面等)而是按其功能(例如模型 - 连接到数据库,视图 - 具有布局页面的代码,控制器 - 计算内容并将数据传递给看法)。如果您查看类似 codeigniter 的东西,那么这对您来说会更加明显。

现在您可以为用户创建模型。在这个模型中,你可以做所有的数据库工作,添加、编辑、删除用户等等。然后这可以与将布局页面的控制器接口,例如查看用户当前是否登录,调用用户的模型并从模型中获取用户名,然后将其传递给视图以显示在屏幕上。当您开始使用代码点火器等框架时,这将更有意义。

不管怎样,祝你学习顺利。

【讨论】:

    【解决方案2】:

    什么是类,什么不是,这真的是你自己的选择。大多数情况下,它是关于你发现什么来创建一个好的概述以及什么使某些用例更容易。在这种情况下,如果您拆分这些操作,而不是将它们放在同一个标​​语下,很可能会导致更多混乱。

    在大多数情况下,我会选择将验证、注册等放在同一个类中。如果管理员也是用户(例如,不是一个全新的用户表),我也会将它们包含在同一个类中 - 或者可能创建一个扩展用户类的管理类。

    但是没有什么归于一类,什么不归类的终极法则。这是关于反复试验,看看什么能给你一个很好的概述,当你开始构建抽象层、扩展类等时,你需要更加小心。采取正确的步骤可以为您在以后的扩展类工作中节省大量工作。

    【讨论】:

      【解决方案3】:

      大约 6 个月前,我从功能性转换为 OOP。我读了一大堆论文,试图弄清楚 OOP 有什么大不了的。

      我认为在这种情况下,概念理解很重要。将对象视为物理事物。

      汽车:

      汽车有属性:

      • 颜色
      • 剩余汽油
      • 最高速度

      汽车有方法:

      • 开始
      • 停止
      • 加速。

      1) 用户是一个对象,登录、注销、注册是用户执行的操作/方法。

      2) 用户有会话变量(属性),所以我会将它们作为属性放在类中

      3) 管理员用户有更多方法,但仍需要访问旧方法。所以理想情况下,管理员用户应该继承属性和方法,我认为这是通过 Extends 关键字完成的。这称为子类化或继承。

      你最好在谷歌上搜索“了解 oop 概念”并阅读与你相关的任何内容

      【讨论】:

      • 没错,将类视为一个物理对象帮助我理解了很多 oop 概念,感谢您的回答:)
      • 很高兴帮助老兄,反正我是这个堆栈溢出游戏的新手,这很有趣
      • 是的,它很酷,特别是您可以快速获得答案,还有很多很棒的人准备在这里提供帮助:)
      猜你喜欢
      • 1970-01-01
      • 2015-03-26
      • 2020-09-11
      • 2020-08-13
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多