向 PHP 核心添加功能
我有几个我编写的函数,并且经常在我的服务器上使用,有没有办法可以将它们添加到核心中,这样我就不必从外部文件中包含它们?
我正在运行 PHP5
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有几个我编写的函数,并且经常在我的服务器上使用,有没有办法可以将它们添加到核心中,这样我就不必从外部文件中包含它们?
我正在运行 PHP5
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
您可以将库添加为 PEAR 扩展。 然后您可以将其添加到您的 本地 PEAR 存储库。 Pear 被添加到 php.ini 中的默认包含路径中。 然后你可以在你的机器上使用“pear install myextension”。
如果这些是您在 php(php 扩展)中使用的 C 函数,那么您可以使用 PECL 执行类似的操作。
You could add your libraries as a PEAR extension. Then you could add it to your local PEAR repository. Pear is added to the default include path in php.ini. Then you can just use "pear install myextension" on your machines.
If these are C functions you interface with in php (php extensions) then you can do something similar with PECL.
我以前做过这个……这是一个相当复杂的过程,但还不错。 zend.com 上的这篇文章应该告诉您需要了解的一切:
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/
编辑:我应该补充一点,有更好的方法来实现你想要做的事情的本质。 请记住,这样做会进一步扰乱 PHP 的(已经非常混乱的)命名空间。 您最好只创建一个全局包含文件,其中包含所有最常用的函数,您可以将其包含在任何需要的地方。
edit2:在重读您原来的问题后,您说您不想这样做,但我仍然认为这可能是最好的方法。 但祝你在延长路线上好运。
I've done this before.. it's a fairly involved process, but not too bad. This article at zend.com should tell you everything you need to know:
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/
edit: I should add that there are better ways to achieve the essence of what you're trying to do. Remember that doing this will further clutter up PHP's (already very cluttered) namespace. You're probably better off just making a global include file that has all of your most commonly used functions that you include wherever you need it.
edit2: Upon rereading your original question, you said you don't want to do that, but I still think it's probably the best way. But best of luck to you with the extension route.
如果您希望函数始终可用而不包含它,请执行以下操作:
在 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 中查找以查找该文件。
If you want your function to always be available, without including it, do this:
Create your function in an php file.
In your php.ini search for the option "auto_prepend_file" and add your php file to that line, like this: auto_prepend_file = "/path/to/my_superglobal_function.php"
Or if you write without a path like this: auto_prepend_file = "my_superglobal_function.php" It will look in your include_path in php.ini to find the file.
为什么将文件包含在您需要的地方如此困难?
我想 auto_prepend_file PHP。 ini 指令可以工作。 但其实并不推荐。
Why exactly is it so hard to include the files where you need them?
I suppose the auto_prepend_file PHP.ini directive could work. But it's not really recommended.
如果您有自动加载,您可以将函数移动为静态My_Functions 等类的方法。
或者,要将其分成更多文件,您可以使用 My_Functions_Math。 然后你只需要加载你需要的功能。 通过自动加载,您不必担心包含文件。
您无法自动加载命名空间函数,因此如果您想使用自动加载,函数必须是类中的静态方法。 但是您可以使用命名空间来更轻松地将来替换类和/或缩短长类名。 例子:
If you got autoload, you can move the functions as static methods of a class like My_Functions.
Or for dividing it into more files you can use My_Functions_Math. Then you will only need to load the functions you need. And with autoload you don't have to worry about including files.
You cant autoload namespace functions, so if you want to use autoload the functions have to be static methods in a class. But you can use namespace to make it easier to fx replace the class in the future and/or shorten the long class name. Example: