【问题标题】:New to OOP in PHP question about defining classes关于定义类的 PHP 问题中 OOP 的新手
【发布时间】:2011-06-25 18:32:59
【问题描述】:

正如标题所说,我是 OOP 的新手,但我是自学 PHP 的。我们有一个运行内置程序 PHP 的系统,由于它的大小,现在修改起来有点困难。所以我正在研究用 PHP OOP 重写以使其更易于维护。

我现在正在制作课程列表。我们的系统是用于管理驾驶学校的,所以我们有学校、教师、学生和课程,我可以看到这些都是对象,因此也是课程。我的问题来自这样一个事实,我们有一所学校,但有很多教师、学生和课程,所以在构建程序时,我们需要显示这些对象的列表。因此,它们中的任何一个的列表本身是否会被视为一个类,或者在编程方面,是否有必要为每个教师、学生和课程创建一个实例。还是我错过了 OOP 系统设计中的一些基本内容。

正如我所说,只是在做 OOP,所以请对我温柔一点。

非常感谢 科林


感谢大家到目前为止的 cmets。我越想越明白,至少对我来说是这样。我的系统中的某物列表是一个对象。我想列表中的每个项目都将是一个表单,就像现在一样,因此对项目的任何选择都将导致运行一个新脚本,该脚本将创建一个学生、教师等的新实例以及执行方法新实例。

【问题讨论】:

  • 查看一些 MVC 框架,例如 CodeIgniter 和 CakePHP。一旦您开始接触模型(基本上是您的学生、讲师和课程),如何处理您的案例就会很明显,并且您可以轻松地以结构化、可维护的方式使用它们。
  • 我第二个 CodeIgniter,没有理由重新发明轮子。
  • 我建议不要看看 CI 或 CakePHP,因为它们不会教你正确的 OOP。此外,您可能会得出模型 === 数据库的结论,这是不正确的。

标签: php oop class object


【解决方案1】:

这两种方法都可以。各有优劣。如果你只想要一个对象列表,你可以创建一个它们的数组。它会正常工作。

请记住,您可以在一个类中包含另一个类的对象。因此,您的学校可以拥有一组教师、一组学生和一组课程。

但是,如果您希望这些列表具有额外的属性,您也可以将它们变成自己的类。

【讨论】:

    【解决方案2】:

    OOP 是为了克服复杂性而设计的,所以如果每个实体都有许多不同的操作,那么在以后的道路上为每个实体分类是让你自己更容易的方法。此外,如果函数调用彼此独立,您始终可以进行静态调用,而不必实例化对象。

    【讨论】:

      【解决方案3】:

      我说忘记框架......每个都有自己的细微差别。有些人甚至不费心正确地遵循 MVC (Symfony),而且由于其他积极的频繁版本更新 (Zend),许多人的教程非常矛盾你选择走那条路。虽然我获得了 Zend 认证,每天都在 Symfony 中工作并且使用了很多 CI,但我个人仍然更喜欢自己动手,尤其是在处理大量 ajax 的应用程序时。

      这对我来说很有效:http://www.killerphp.com/tutorials/object-oriented-php/

      祝你好运。保持开放的心态并耐心等待。虽然这似乎需要更多时间,但一段时间后它会成为第二天性并且实际上非常有益。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 2011-02-17
        • 1970-01-01
        相关资源
        最近更新 更多