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

Chr*_*ris 2 php architecture class

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

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

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

提前致谢.

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

pow*_*tac 11

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

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

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

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


Cat*_*lus 5

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

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