繁体   English   中英

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

[英]PHP - Extension vs. Library vs. Class - when and why

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

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

同样在发布自己的代码时,是什么让你决定发布库与类对比扩展? 或者你跟哪个听起来更好?

提前致谢。

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM