【问题标题】:PHP - Extension vs. Library vs. Class - when and whyPHP - 扩展 vs. 库 vs. 类 - 何时以及为什么
【发布时间】:2010-12-06 18:13:13
【问题描述】:

我正在尝试完成一项任务,结果发现我需要的代码被打包为 PHP extension,据我所知,这意味着我必须具有 root 访问权限安装它(我在共享主机上,所以这有点问题。

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

此外,在发布您自己的代码时,是什么让您决定以库、类和扩展的形式发布?还是你选择哪个听起来更好?

提前致谢。

附:如果您必须知道我在说哪个扩展名,那就是Libpuzzle,但这真的是题外话,我的问题更笼统。

【问题讨论】:

    标签: php architecture class


    【解决方案1】:

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

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

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

    通常可以在 PHP 中对扩展功能进行编程。例如PEAR::Compat class。通常你会发现你需要的功能是一个可用的 PHP 类。我相信 stackoverflow 阅读器会为您提供在哪里可以找到特定 PHP 类的想法。

    【讨论】:

    • 那么我无法将 Libpuzzle 转换为更易于访问的格式吗? :(
    • 也许您可以通过 dl() us.php.net/manual/en/function.dl.php 加载此扩展程序,但通常共享主机不允许这样做。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回答。我会调查是否可以访问自定义 php.ini
    【解决方案3】:

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

    【讨论】:

    • 感谢您的想法,将进一步研究。
    猜你喜欢
    • 2013-11-04
    • 2012-05-28
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多