在我看来,PHP中程序员最重要的事情,除了他的经验之外,他的工具包。也就是说,自古以来他就已经写出了自己的代码。
对于我来说,在这种情况下,OOP的优势非常明显。拥有一个你知道的类将总是通过简单的方法预处理你自己和团队成员的要求,然后通过调用大量的静态函数。虽然你可以争论一个包含satic功能的图书馆服务于同样的目的,但在我看来,课程更容易阅读和理解。举例来说,在我的自定义会话类的程序员可以看看我的代码,看看,
$my_session = new session();
$my_session->start();
if (($session_errno = $my_session->error()) !== FALSE)
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
和容易理解,在这个应用会话通过我们的自定义会话类处理,并且应该返回某种类型的成功/失败的没有检查过图书馆/班级。同时,呼叫像这样,
session_start();
if (session_error())
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
不说清楚,session_start()
不是默认的PHP会话处理程序,但它会调用哪个被列入全球包括一些大型列表session_set_save_handler()
定义的函数这可能不容易在大型应用程序中找到。它也不那么清楚,session_error()是一个返回由自定义会话处理程序设置的错误的函数,它可以主动在已经生成的会话中查找会话问题,并且完全独立于PHP的默认会话。
这不是一个很好的例子,但我认为它是一个很好的例子。我没有详细讨论保护整个应用程序的数据,继承以及使OOP有用的所有其他内容。
但很快,想象一个访问应用程序的MYSQL数据库的类。花费大量的时间来设计类以使用准备好的语句,记录错误并根据需要为程序员提供适当的逻辑。通过简单地调用该类的公共“数据访问”函数,而不必担心致命错误,错误逻辑或危险SQL(注入等),团队可以更少担心数据库访问问题。
这一切都可以用静态函数完成,就像你所建议的那样,但是静态库中的每个函数都作为一个整体暴露给应用程序,而只有public和'SAFE'函数暴露给使用数据库的应用程序访问对象。程序员不会意外地调用一个危险的函数,如果没有被其他函数正确初始化可能会导致重大问题,程序员也不能像使用一系列静态函数和全局变量一样有意地抑制类错误或其他受到类保护的数据。
虽然一个好的应用程序可以在没有任何对象的情况下进行设计,但一个好的程序员应该在适当的时候享受对象所提供的可用性,可扩展性和保护。
我会留下我最后的隐喻。对象就像工厂内的专用机器和工具。虽然工厂本身在其装配线上有许多这些独特的工具,但从简单的弯曲制动器到数控机床和自动化机器人,它们只是帮助更多众多劳动者和管理者的团队中的一小部分,我们的静态功能,做建设一辆更好的汽车,卡车或自行车的工作。
什么是“随机函数”? – Svisstack 2010-11-01 12:08:57
** [函数.php vs OOP]的可能重复(http://stackoverflow.com/questions/2392795/functions-php-vs-oop)和[什么是类的点](http://stackoverflow.com/questions/1993638/classes-whats-the-point)** - 总结:你要么使用OOP要么你不要。 – Gordon 2010-11-01 12:12:27
我认为“Utilities”/“Helpers”类在大多数OO项目中都是标准的:P。 – Matt 2010-11-01 12:18:58