我面临一些困惑,因为我决定从程序转换为oop,我发现它更有效率。
所以无论如何我有一些问题希望我能在这里找到答案:)
假设我正在开发一个需要
的php Registeration System1-Signup过程 2-激活过程 3登录过程(需要) 验证输入 验证会话等
问题是:我应该为每个进程创建类吗?或者我可以将它们组合成一个名为“User”的类,使用登录,注册,激活等方法,或者我可以创建一个名为USER的类。有用户的属性,注册,登录类扩展它吗?
我应该为Sessions,Validating等使用分隔的类吗?或者只是正常检查主要类
我应该将ADMIN类与普通类分开吗?意思是我有一个USER类,它有方法,登录用户,注册用户等,我应该为DELETE用户,UPDATE用户添加更多管理功能吗?或将其与正常类别分开
答案 0 :(得分:1)
您应该为User
login
以及其他任何内容创建具有不同功能的signup
课程。
您应该将不同的功能分成任意数量的类/对象。例如,对于您的User
课程,您可能会在Session
课程中使用User
课程来执行会话管理。您还可以创建Person
继承自User
的类。这可以包含printFullName
之类的功能,而User
类则包含login
和register
等特定内容。
再一次,由你决定。你想做什么,就可以做什么。我可能会有一个UserAdmin
类,它具有deleteUser($userid)
和editUser($userid)
等函数,因为它不会让它与auth方面混淆。然而,它可以通过其他方式完成。您可以为特定用户调用User
对象,并在其上调用deleteUser()
以删除该用户。它是你最舒服的。
与我的所有答案一样,它是你想要做的。没有标准,也没有规则。 OOP主要是将所有内容分层,以便在结构上和结构上创建可重用的代码。
您想要关注的另一件事是MVC编程。 MVC代表模型,视图,控制器。在这个设置中,你实际上不是通过类别(例如用户,页面等)来区分对象,而是通过它们的功能(例如模型 - 连接到数据库,视图 - 具有布局页面的代码,控制器 - 计算内容并将数据传递给视图)。如果你看一下像codeigniter这样的东西,那么这对你来说会更加明显。
现在您可以为用户创建模型。在此模型中,您可以执行所有数据库操作,添加,编辑,删除用户等。然后,这可以与将布置页面的控制器接口,例如,查看用户当前是否已登录,调用用户的模型并从模型中获取用户的名称,然后将其传递给视图以在屏幕上显示。当您开始使用代码点火器等框架时,这将更有意义。
无论如何,祝你好运。
答案 1 :(得分:0)
这是你自己的选择,什么是课堂,什么不是。主要是关于你发现什么来创建一个良好的概述以及什么使某些用例更容易。在这种情况下,如果您拆分这些操作,它很可能会造成更多混淆,而不是将它们放在同一条横幅下。
在大多数情况下,我会选择在同一个班级中进行验证,注册等。如果管理员也是用户(例如,不是一个全新的用户表),我也会将它们包含在同一个类中 - 或者创建一个扩展用户类的管理类。
但是,对于一个班级而不是一个班级,没有最终法则。这是关于试验和错误,看到什么给你一个很好的概述,当你来构建抽象层,扩展类等时,你需要更加小心。采取正确的步骤可以为以后扩展课程的工作节省大量工作。
答案 2 :(得分:0)
我在大约6个月前从功能到OOP进行了切换。我读了很多文章,试图弄清楚OOP的重要性是什么。
我认为在这种情况下,概念性理解很重要。把对象想象成一个物理的东西。
一辆车:
汽车有属性:
汽车有方法:
1)用户是一个对象,登录,注销,注册是用户所做的动作/方法。
2)用户有会话变量(属性),所以我将它们作为属性放在类
中3)管理员用户有更多方法,但仍需要访问旧方法。因此理想情况下,管理员用户应该继承属性和方法,我认为这是通过Extends关键字完成的。这称为子类化,或者是inhertance。
你最好是谷歌“理解oop概念”并阅读与你有关的任何内容