【问题标题】:Adding functions to PHP core向 PHP 核心添加函数
【发布时间】:2008-12-22 04:08:01
【问题描述】:

我编写了几个函数并经常在我的服务器上使用,有没有办法可以将它们添加到核心中,这样我就不必从外部文件中包含它们?

我正在运行 PHP5

【问题讨论】:

  • 你能说得更具体一点吗?你是指用 PHP 编写的函数还是用 PHP 编写的函数(php 扩展)?
  • 你的意思是 PHP 5.2.x 还是 PHP 5.3 ?
  • 嗯,不同但无关紧要,它不是 4 而不是 dev6

标签: php deployment pear pecl


【解决方案1】:

您可以将您的库添加为 PEAR 扩展名。然后您可以将其添加到您的local PEAR repository。 Pear 被添加到 php.ini 中的默认包含路径中。然后你可以在你的机器上使用“pear install myextension”。

如果这些是您在 php(php 扩展)中使用的 C 函数,那么您可以使用 PECL 执行类似的操作。

【讨论】:

  • 只是为了详细说明 PEAR——您不必将代码提交给 PEAR,但您仍然可以创建自己的 PEAR 样式的包。您甚至可以设置一个私人渠道进行分发。
  • 是的,这就是我所说的本地 PEAR 存储库的意思,并提供了一个链接来解释如何做到这一点。
【解决方案2】:

我以前做过这个。这是一个相当复杂的过程,但还不错。 zend.com 上的这篇文章应该会告诉你你需要知道的一切:

http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/

编辑:我应该补充一点,有更好的方法来实现你想要做的事情的本质。请记住,这样做会进一步弄乱 PHP(已经非常混乱)的命名空间。您最好只创建一个全局包含文件,其中包含您最常用的所有功能,您可以在任何需要的地方包含它们。

edit2:重读您的原始问题后,您说您不想这样做,但我仍然认为这可能是最好的方法。但祝你在扩展路线上好运。

【讨论】:

  • 我要试一试...如果结果很好,没有更好的结果我会接受它。
【解决方案3】:

如果您希望您的函数始终可用,但不包含它,请执行以下操作:

在 php 文件中创建你的函数。

在您的 php.ini 中搜索“auto_prepend_file”选项并将您的 php 文件添加到该行,如下所示:auto_prepend_file = "/path/to/my_superglobal_function.php"

或者如果你写的时候没有这样的路径: auto_prepend_file = "my_superglobal_function.php" 它会在你的 php.ini 中的 include_path 中查找文件。

【讨论】:

    【解决方案4】:

    为什么在您需要的地方包含文件如此困难?

    我想auto_prepend_file PHP.ini 指令可以工作。但是真的不推荐。

    【讨论】:

    • 老实说,现在维护起来很烦人,默认包含类中有一个文件,其中包含 40 多个包含来获取所有功能,如果它们在核心中,它会变得有点旧我也不必记住包含包含文件。
    • 不过,如果你有一个文件可以加载所有文件,那么记住调用 require_once "thefile.php" 有多么困难;在你的脚本中?包含只是 PHP 的一种生活方式。
    【解决方案5】:

    如果你有autoload,你可以将函数作为类的静态方法移动,比如My_Functions。

    或者要将其分成更多文件,您可以使用 My_Functions_Math。然后你只需要加载你需要的功能。使用自动加载,您不必担心包含文件。

    你不能自动加载命名空间函数,所以如果你想使用自动加载函数必须是类中的静态方法。但是您可以使用命名空间来更轻松地在将来替换类和/或缩短长类名。示例:

    use My\Functions\Math as Math;
    Math::calcThis($i);
    

    【讨论】:

    • 命名空间适用于 php 5.3,它是 php 6 的预览版。我认为问题的作者考虑到了 php 5.2。
    • 是的。我的回答主要是关于 5.2,但对 5.3 中的命名空间有评论。基本上说,如果他想使用命名空间,如果他想使用自动加载,他仍然必须将它放在一个类中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多