多年来我一直在编写没有“课程”的PHP ...我错过了什么?

时间:2012-02-21 09:34:54

标签: php oop coding-style

对于我的生活,我似乎无法用PHP包围“类”。

我已经成功地编写了没有它们的大型,可扩展且受欢迎的网站。

我错过了什么? (我该如何学习?)

6 个答案:

答案 0 :(得分:11)

类将有助于代码重用以及可能是非常结构化的应用程序。

程序编程在开发时间和执行速度方面都要快得多。

OO编程是更主流的方式,但并不总是最好的方式。这是一本名为PHP Objects,Patterns and Practice的书,它是一本非常好的读物,它涵盖了类的基础知识,为什么以及如何使用,抽象和常见的设计模式,如MVC。它还包括单元测试和php开发人员的其他非常好的实践

答案 1 :(得分:9)

类(面向对象编程)的关键在于它将数据与在其上运行的代码捆绑在一起。如果做得好,这会导致耦合程度降低,从而使代码更易于维护。

实际上,它意味着更少的全局变量(无论是直接使用还是通过静态工厂方法访问)和更少的数据传递(即较小的方法签名)。

有关具体示例,请查看Mysqli extension:每个函数都有一个过程版本和一个OOP版本,并且过程版本几乎总是需要一个额外的“链接”参数来为其提供上下文,而不是OOP version从当前对象获取该上下文。

答案 2 :(得分:3)

每个人都回答是对的,你错过了很多因为我们说你有一个照片库网站 而不是编写函数,最后你会以很多函数结束

OOP在以下方面很有用:

  1. 代码组织和可维护性
  2. 增加清晰度并降低复杂性
  3. 强调程序数据
  4. 代码模块化
  5. 代码重用性(相信我,你需要很多)
  6. 非常适合数据库
  7. 我以前没有使用过OOP,但是我开始说实话并且很久以前,并且发现它在那些特别是代码的可重用性方面非常有用

    假设我有一个照片库网站 我将为用户创建一个类,这个类将在所有用户表上执行CRUD 还有一个照片类可以在所有照片表上进行CRUD

    我还可以创建一个类来为我做所有的CRUD而不指定在哪个表上 然后使用继承扩展我的用户类和我的照片类

    中的所有CRUD

    这一点是我只能写一次CRUD方法 然后在我的所有其他课程中重复使用它

    我希望我能回答你的问题

答案 3 :(得分:3)

IMO,如果你不想分开你的htmls& php代码;你最好不要使用课程。

你需要在框架环境中(不一定)需要它们,如果你想要对数据进行客观化处理,你就需要它们,就像那样处理它们。

但如果你没有它就没问题,那你就没事了。)

当涉及到处理一个非常复杂的系统时,有许多不同的数据结构,不止一个团队成员等。你和你的代码需要组织得很好,你需要上课。

答案 4 :(得分:2)

好问题!你有我的upvote!

直截了当:
你错过了整个世界

有许多比喻可以描述它,但没有比练习更好的了 - 你在编程“年”之后显然知道了它!

决定一个小项目并将其写成OOP风格。那你就明白了。

请注意这个提示:将您的类命名为文件名(例如“MyClass” - >“MyClass.php”)。易于维护。

答案 5 :(得分:0)

你可能缺少可测试性:我猜你的函数会调用其他函数,而这些函数又可以调用另一个函数,对吧?因此,您将无法测试隔离的功能。使用OOP,您可以组装“堆”对象,并可以将每个对象与“假”对象(称为模拟或存根)进行交换以进行测试。这样,您可以单独测试每个功能。想想能够在不需要数据库的情况下测试输出代码。考虑测试您的控制器代码(处理请求参数的代码并决定要采取的操作),而无需Web服务器。