【问题标题】:What are some useful ways to utilize classes in PHP?在 PHP 中使用类有哪些有用的方法?
【发布时间】:2009-01-28 06:58:19
【问题描述】:

我已经学会了如何在 PHP 中使用类,但到目前为止我只真正找到了一个对它们有用的应用程序。我创建了一个用户类来执行与我的 Web 应用程序中的用户相关的各种任务,例如输出头像、显示消息数量等。

除了这个例子,还有哪些实用的类使用方法?

【问题讨论】:

    标签: php class


    【解决方案1】:
    【解决方案2】:

    阅读其他人的代码并了解他们如何将事物分成类是一个非常好的主意。查看一些PEAR 模块或框架(ZendSymfony、Cake)。

    【讨论】:

      【解决方案3】:

      任何时候你可以定义一个“做事”的“事情”,你就有了一个定义对象的候选者。两个来自 PHP 标准库的具体示例立即浮现在脑海:

      • 许多数据库模块使用对象进行连接、查询和结果。
      • DateTime 类封装了一个通用的时间概念,包括输入和输出格式、时区转换和日期算术。

      问题是,面向对象编程是一个伟大的想法——你可以用面向对象的方式解决几乎所有的编程问题。

      【讨论】:

        【解决方案4】:

        我构建了一个实用程序类,它使mail() 函数的使用人性化,我经常使用它。

        【讨论】:

        • 嗯,我现在手头没有代码(我现在无法访问的个人服务器),但这个想法只是为了提供方便的方法来创建“来自”-标头,定义 HTML 邮件的 MIME 标头等。没有什么先进的,只是一个小/快速的方便/速记。
        【解决方案5】:

        通过使用类(例如上面提到的 PEAR 包,其他),您可以利用已经编写和测试的代码来执行常见任务。

        也可以帮助您避免重新发明轮子。

        【讨论】:

          【解决方案6】:

          我强烈建议您学习 [设计模式][1]。他们中的许多人都很好地利用了类并解决了常见的编程问题。特别是工厂和抽象工厂模式是一个很好的起点。

          还有一本名为PHP Hacks 的优秀书籍,其中有一章介绍了如何在 PHP 中实现许多不同的模式,因此您可能想查看一下。

          另外,探索 PHP 中的一些内置对象,看看它们是如何工作的并获得更多想法:

          【讨论】:

            【解决方案7】:

            我创建了一个用户类来执行与我的 Web 应用程序中的用户相关的各种任务,例如输出头像、显示消息数量等。

            查看http://en.wikipedia.org/wiki/Cohesion_(computer_science)

            你的例子听起来像逻辑凝聚力。

            旨在实现功能凝聚力。每个类都执行一项特定任务,并尽可能使类通用,您会发现您可以一遍又一遍地重用它们。

            Symfony 的 sfParameterHolder 就是一个很好的例子:

            http://www.symfony-project.org/book/1_2/02-Exploring-Symfony-s-Code#chapter_02_sub_parameter_holders

            Symfony 使用它来保存视图模板的变量(在 MVC 中),将请求参数存储在 Web 请求对象中(它本身是一个代表所有请求参数的类,尽职尽责地去除了反斜杠等),在 sfUser 类中存储所有最终进入 $_SESSION 等的参数等等。

            下载 Symfony 的“沙盒”,进入 /lib/symfony/ 文件夹并从中学习。它很复杂,但恕我直言,代码非常干净。

            http://www.symfony-project.org/installation

            Zend 也不错,但包含文件的数量可能会过多,而且我个人不喜欢它们的命名约定,尤其是使用下划线前缀。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-09-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多