PHP - 扩展与库与类 - 时间和原因

时间:2009-10-14 16:53:34

标签: php architecture class

我正在尝试完成一项任务,并且证明我需要的代码打包为PHP 扩展,根据我所说的,我必须拥有root访问权限安装它(我在共享主机上,这有点问题。

我稍后会解决这个问题,但是现在我试图理解扩展,库和类之间的区别。它是否更像是一个打包的东西,可以用不同的方式覆盖和重新打包,或者它背后是否有一个有效的架构推理?

同样在发布您自己的代码时,是什么让您决定发布库与版本与扩展?或者你选择哪个听起来更好?

提前谢谢。

P.S。如果你必须知道我正在谈论的是哪个分机,那就是Libpuzzle,但这真的不是重点,我的问题更为笼统。

3 个答案:

答案 0 :(得分:11)

扩展是用C编写的代码,它将在PHP启动时包含在PHP核心中。通常,在包含扩展名后,您可以使用更多本机功能。例如拉链功能。

是PHP代码的抽象元素,它解决了常见任务。例如发送电子邮件。您可以在pear.php.net找到一些常用课程。

是PHP类的集合,用于解决更多通用任务,例如构建HTML表单和发送电子邮件。 Zend Framework是一个由许多PHP类组成的框架。

通常,扩展功能可以用PHP编程。例如PEAR::Compat class。通常,您会发现作为PHP类所需的功能。我确信stackoverflow读者会为您提供在哪里找到特定PHP类的想法。

答案 1 :(得分:5)

扩展程序属于低级别。通常用C / C ++编写,并编译成本机代码共享库,它们直接与Zend Engine交互。它有利有弊,主要优点是速度快,控制力强;和主要缺点 - 它们更难安装,并且需要编译(并且需要编译器和PHP头文件);虽然他们需要root访问权限并不是真的 - 你只需要能够使用自定义的php.ini(或dl()函数,但我看到他们出于某种原因弃用了它。)

库/类是高级的并且是解释的。如果您不知道是否需要编写扩展名,那么您可能不会。关于什么课程 - 阅读OOP。库是可重用的代码集合(最常见的是函数/类的形式)。

答案 2 :(得分:1)

某些库(包括libpuzzle)还包含一个命令行工具。因此,如果由于您的共享托管环境而无法使用PHP库,那么您可以编译命令行工具。然后,您可以使用exec之类的东西从PHP运行它。它会比库慢,需要更多内存,但它可能会完成工作。当然,许多主机也对exec这样的命令有限制,所以这可能也不起作用。