gpt4 book ai didi

php - 这个简单的 PHP 应用程序的最佳 OOP 方法?

转载 作者:行者123 更新时间:2023-11-30 23:57:13 25 4
gpt4 key购买 nike

好的,我无法插入概览图片,但我需要为我的学习创建一个 PHP 应用程序,它必须允许学生注册,并且管理员可以编辑类(class)和学生信息。我们不需要以 OOP 风格编写代码,但既然以 OOP 编写代码是最佳编程实践,为什么不从头开始学习 OOP。

我是初学者,但我了解 OOP、类、继承、setter 和 getter 以及所有很酷的行话的基础知识,但我正在努力决定这个应用程序的哪些部分应该是对象,我应该做类(class)和学生类(class)或添加、编辑和删除类(class)?任何有关如何处理和可视化此类问题的建议都将不胜感激。

最佳答案

非常粗略:我会这样做:

  1. 将您的数据存储在 SQL 或 XML 中。您将需要两张 SQL 表,一张用于学生,一张用于类(class)。您可以使用一个包含所有数据的 XML 文件,也可以使用两个文件(我推荐)。

  2. 创建一个名为 dataItem 的类,其属性如“$arr_fields”对应于单个数据记录(SQL 表中的单个行或 XML 记录) .

  3. dataItem 类应该有以下方法(都是公共(public)的):

    • loadFromSQL()(或loadFromXML())
    • saveToSQL()(或 saveToXML())
    • add()edit()delete()
    • 使用 HTML 的 view() 方法
    • 这些方法显然是用来在类的SQL/XML数据和$arr_fields之间读写数据,显示$arr_fields中的数据。 $arr_fields 的键是特定 SQL 表的 SQL 列名称(或 XML 标记或属性名称)。
  4. 尽量不要在您的构造函数或任何其他仅用于修改类数据的方法中调用 loadFromSQL() 或 saveToSQL()。将这些操作分开。编辑:这是个人偏好,可帮助我跟踪对象的状态。

  5. 创建扩展 dataItem 类的学生类和类(class)类。

  6. 如果需要,您可以在扩展类中覆盖方法,例如 view() 方法。

  7. 然后您可以从 Admin 对象(如建议的 rcdmk)或从 StudentFolder 和 CourseFolder 类调用 Students 和 Courses 中的方法,它们的 view() 方法包含需要执行的操作的按钮。 (让 StudentFolder 和 CourseFolder 扩展您创建的 Folder 类)。

更新:

例如:如果您在 SQL 表中的主键是 id,那么 dataItem 的 loadFromSQL($id, $tablename) 应该设置 $arr_fields 以便它的键是列名,它的值是主值等于 $id 的行中的值。

在 Students 中,您可以按如下方式覆盖 loadFromSQL():

class Students extends dataItem {

// other attributes

public function loadFromSQL($id) {
parent::loadFromSQL($id, "Students");
}

}

编辑:重新考虑后,最好设置 $arr_fields["id"] = $id 并使用 dataItem 的构造函数设置 $tablename - 这样您就不必覆盖 loadFromSQL() 或为其指定参数。 loadFromSQL() 然后应该加载记录(如果存在)。如果设置了 $arr_fields["id"] , saveToSQL() 应该在 SQL 中保存 $arr_fields ,如果没有设置,则创建一个新记录。无论如何,您必须找到一种与适合您的数据交互的一致方式,这些只是可能性。

但是,如果您没有 OOP 和 SQL 或 XML 方面的经验,您可能会为自己打开一个蠕虫 jar 头,最好只使用函数和 php 数组来为您的数据进行分配。除非你有时间学习...

关于php - 这个简单的 PHP 应用程序的最佳 OOP 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9862974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com