有没有人试图让PHP的系统功能更加面向对象?

时间:2008-09-15 01:56:26

标签: php oop wrapper

我只是好奇是否有任何项目试图将所有(或大多数)PHP的内置函数分组到更面向对象的类层次结构中。例如,将所有字符串函数分组为单个String类等

我意识到这实际上不会解决任何问题(除非修改发生在PHP源代码级别),因为所有内置函数仍然可以在全局命名空间中访问,但它肯定会使可用性更高更容易。

4 个答案:

答案 0 :(得分:6)

太多次了。一旦有人发现PHP具有OO功能,他们就想将所有内容包装在类中。

PHP中的OO内容使得您可以以任何方式构建解决方案。但是将现有函数包装在Objects中并不会产生太大的回报。

据说PHP的核心已经非常面向对象了。看看SPL

答案 1 :(得分:5)

我认为这样的事情是PHP向前推进的整体。作为一名.Net程序员,我发现PHP使用它的100万和1个全局函数很痛苦。 PHP 5.3具有名称空间是很好的,但是当它们自己的库甚至不是面向对象时,它并没有多大帮助,更不用说使用命名空间了。我不介意PHP作为一种语言,但他们的API非常混乱,可能需要彻底改革。有点像VB成为VB.Net时所经历的那样。

答案 2 :(得分:4)

回答你的问题,是的,有几个库正是你所说的。至于你想要使用的是一个完全不同的问题。 PHPClasses和pear.org是开始寻找此类库的好地方。

更新: 正如其他人所说的那样,SPL是一个很好的库并包含许多内置的php函数。但是仍然有很多PHP函数没有包装。离开我们仍然没有银弹。

在使用像Cakephp和Zend(其他人)这样的框架时,我注意到他们试图通过包含自己的库并将诸如DB连接之类的基础构建到框架工作中来解决其中的一些问题。所以框架可能是另一种解决方案

答案 3 :(得分:4)

我不同意。面向对象编程本质上不比过程编程好。我相信你不应该使用OO,除非你需要多态行为(继承,重写方法等)。使用对象作为代码的简单容器不值得花费。这是字符串的特别,因为它们使用了很多(例如作为数组键)。每个应用程序通常都可以从某些多态特性中受益,但通常是高级别的。你想要扩展一个String类吗?

此外,需要一点历史来理解PHP的奇函数命名。 PHP基于标准C库和POSIX标准,并使用许多相同的函数名称(strstr,getcwd,ldap_open等)。这实际上是一件好事,因为它可以最大限度地减少语言绑定代码的数量,确保完整的一组完善的功能(几乎可以在C中用PHP完成的任何事情),并且这些系统库都经过高度优化(例如: strchr通常是内联的,使其快10倍。)