【问题标题】:custom php function creation and install自定义php函数创建和安装
【发布时间】:2010-04-01 13:58:11
【问题描述】:

我想知道如何创建一个可以安装在php中的php函数 就像已经内置的功能一样:

rename
copy 

我想要实现的要点是一个简单的 php 函数,它可以从整个主机上的任何 php 页面调用,而无需在 php 页面中/需要包含一个 php 函数。

很简单,我想创建一个可以像这样工作的函数:

location();

如果没有给定的输入字符串,将通过 echo 等输出文件的当前位置

【问题讨论】:

    标签: php php-extension


    【解决方案1】:

    嗯,这里有几个选项。其中之一是通过编写扩展来实际扩展语言。您必须处理 PHP 源代码,用 C 编写它,并在内部处理 Zend 引擎。您可能无法在共享主机上使用它,而且会非常耗时,而且可能不值得。

    我要做的是将所有函数放入一个单独的 PHP 文件中,例如 helper_functions.php。现在,进入您的php.ini 并添加指令:auto_prepend_file = helper_functions.php。此文件应位于您的 include_path 中指定的目录之一(这也是 php.ini 指令)。

    这基本上是在每个脚本上自动添加include 'helper_functions.php';。每个请求都将包含这些功能,您可以全局使用它们。

    Read more about auto_append_file.

    【讨论】:

    • 感谢您对我的问题的出色回应我非常感谢这一点,只是为了验证您的提议:而不是陷入 php zend 并用 C# 编写它既费时又可能不兼容对于跨多台机器的大规模灌输,您建议编辑 PHP.ini 并放置 auto_prepend_file 这将在每个页面加载时包含给定的 php 函数文件,如果未调用函数,则不会给出响应,就像我将文件包含在其中一样php 源代码。这个 Include_path 可以是任何给定的目录吗?
    • 如果你写了一个扩展,它必须是 C 而不是 C#(这不会太糟糕)。您是对的,如果您不调用这些函数,只要您拥有的只是函数声明,就不会给出任何响应。虽然它仍然是一个普通的 php 文件,所以如果你的脚本顶部有 echo 'hello!';,你仍然会看到 echo'd 每个请求。是的,include_path 可以是任何目录,请在此处阅读更多信息:php.net/manual/en/ini.core.php#ini.include-path
    • 那么我可以在 www 之外包含一个 php 文件吗?目录和php + webserver也有权限浏览的用户区非常感谢:)
    • 可以,只要您在include_path 中指定即可。另外,如果您喜欢这个答案,请点赞并接受(向上箭头和左侧的复选标记):)。
    • 当然,非常感谢你能给我一个小例子供参考吗? (到另一个文件夹/用户区域) - 因为我从中提取的参考资料正在解释当前目录包括(我怀疑它像正常的包含一样工作)无论如何非常感谢 + 1
    【解决方案2】:

    正如其他人所说,做大多数事情可能有一种更简单、更好的方法。但是如果你想写一个扩展,试试这些链接:

    http://docstore.mik.ua/orelly/webprog/php/ch14_01.htm

    http://www.tuxradar.com/practicalphp/2/3/0

    【讨论】:

    • 非常感谢您的帮助,这也帮助了我分配,这正是我最初需要的谢谢,这实际上是目标的靶心,非常感谢它极大地帮助了我的理解
    【解决方案3】:

    所以你想扩展 PHP 的核心语言来创建一个名为 location() 的函数,用 C 编写,可以通过以下方式在 PHP 中完成:

    echo __FILE__;
    

    没错。玩得开心。

    【讨论】:

    • 讽刺进入 cmets 部分。
    • 这不是我的意思,Location() 模块是我打算完成的一个例子,我意识到 echo FILE;将完全输出文件的位置,谢谢。我试图问的主要问题是如何将内置函数安装到 php 中?
    • 你对我如何完成安装我自己的自定义php函数有什么想法吗?
    • 这是一个写扩展的好教程:devzone.zend.com/article/1021
    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多