我只是好奇是否存在任何项目试图将所有(或大部分)PHP 的内置函数组合成一个更加面向对象的类层次结构。例如,将所有字符串函数分组到一个字符串类中,等等。
我意识到这实际上不会解决任何问题(除非修改发生在 PHP 源代码级别),因为所有内置函数仍然可以在全局命名空间中访问,但它肯定会使可用性更容易。
次数太多了。一旦有人发现 PHP 具有 OO 特性,他们就想将所有内容都包装在类中。
PHP 中的 OO 内容的重点是,您可以以任何您想要的方式构建您的解决方案。但是将现有函数包装在 Objects 中并没有带来太多回报。
话虽如此,PHP 的核心已经相当面向对象了。看看SPL。
我认为这样的事情对于 PHP 向前发展是不可或缺的。作为一个主要的.Net 程序员,我发现 PHP 使用它的 100 万个和 1 个全局函数很痛苦。PHP 5.3 有命名空间很好,但是当他们自己的库甚至不是面向对象的时候,它并没有多大帮助,更不用说使用命名空间了。我不太介意 PHP 作为一门语言,但他们的 API 非常混乱,可能需要彻底检修。有点像 VB 在成为 VB.Net 时所经历的。
要回答您的问题,是的,有几个库完全符合您的要求。至于你想使用哪一个是一个完全不同的问题。PHPClasses 和 pear.org 是开始寻找此类库的好地方。
更新:正如其他人所建议的那样,SPL 是一个很好的库,并且包含了许多内置的 php 函数。但是仍然有很多它没有包装的 php 函数。让我们仍然没有银弹。
在使用诸如 Cakephp 和 Zend(也包括其他框架)之类的框架时,我注意到他们试图通过包含自己的库并在框架中构建数据库连接等基础知识来解决其中的一些问题。所以框架可能是另一种解决方案
我不同意。面向对象编程本质上并不比过程编程好。我相信你不应该使用 OO,除非你需要多态行为(继承、覆盖方法等)。使用对象作为代码的简单容器是不值得的。字符串尤其如此,因为它们被大量使用(例如作为数组键)。每个应用程序通常都可以从一些多态特性中受益,但通常是在高水平上。你会想要扩展一个 String 类吗?
此外,了解 PHP 的奇怪函数命名需要一点历史。PHP 以标准 C 库和 POSIX 标准为基础,并使用许多相同的函数名称(strstr、getcwd、ldap_open 等)。这实际上是一件好事,因为它最大限度地减少了语言绑定代码的数量,确保了一套经过深思熟虑的功能(几乎可以在 C 中做的任何事情都可以在 PHP 中做)并且这些系统库是高度优化的(例如strchr 通常是内联的,这使它快了大约 10 倍)。