【发布时间】:2009-01-28 06:58:19
【问题描述】:
我已经学会了如何在 PHP 中使用类,但到目前为止我只真正找到了一个对它们有用的应用程序。我创建了一个用户类来执行与我的 Web 应用程序中的用户相关的各种任务,例如输出头像、显示消息数量等。
除了这个例子,还有哪些实用的类使用方法?
【问题讨论】:
我已经学会了如何在 PHP 中使用类,但到目前为止我只真正找到了一个对它们有用的应用程序。我创建了一个用户类来执行与我的 Web 应用程序中的用户相关的各种任务,例如输出头像、显示消息数量等。
除了这个例子,还有哪些实用的类使用方法?
【问题讨论】:
任何时候你可以定义一个“做事”的“事情”,你就有了一个定义对象的候选者。两个来自 PHP 标准库的具体示例立即浮现在脑海:
问题是,面向对象编程是一个伟大的想法——你可以用面向对象的方式解决几乎所有的编程问题。
【讨论】:
我构建了一个实用程序类,它使mail() 函数的使用人性化,我经常使用它。
【讨论】:
通过使用类(例如上面提到的 PEAR 包,其他),您可以利用已经编写和测试的代码来执行常见任务。
也可以帮助您避免重新发明轮子。
【讨论】:
我强烈建议您学习 [设计模式][1]。他们中的许多人都很好地利用了类并解决了常见的编程问题。特别是工厂和抽象工厂模式是一个很好的起点。
还有一本名为PHP Hacks 的优秀书籍,其中有一章介绍了如何在 PHP 中实现许多不同的模式,因此您可能想查看一下。
另外,探索 PHP 中的一些内置对象,看看它们是如何工作的并获得更多想法:
目录迭代器
[1]:http://en.wikipedia.org/wiki/Design_pattern_(computer_science)"设计模式"
【讨论】:
我创建了一个用户类来执行与我的 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 也不错,但包含文件的数量可能会过多,而且我个人不喜欢它们的命名约定,尤其是使用下划线前缀。
【讨论】: