Добавление функций в ядро ​​PHP - PullRequest
2 голосов
/ 22 декабря 2008

У меня есть несколько функций, которые я написал, и я регулярно использую на своих серверах, есть ли способ добавить их в ядро, чтобы мне не приходилось включать их из внешних файлов?

Я использую PHP5

Ответы [ 5 ]

6 голосов
/ 22 декабря 2008

Вы можете добавить свои библиотеки как расширение PEAR . Затем вы можете добавить его в ваш локальный репозиторий PEAR . Груша добавляется к пути включения по умолчанию в php.ini. Тогда вы можете просто использовать «pear install myextension» на своих машинах.

Если это функции C, с которыми вы взаимодействуете в php (расширения php), то вы можете сделать нечто подобное с PECL .

2 голосов
/ 15 июня 2015

Если вы хотите, чтобы ваша функция всегда была доступна, без ее включения, сделайте следующее:

Создайте свою функцию в php-файле.

В вашем php.ini найдите параметр «auto_prepend_file» и добавьте свой php-файл в эту строку, например: auto_prepend_file = "/path/to/my_superglobal_function.php"

Или, если вы пишете без пути, подобного этому: auto_prepend_file = "my_superglobal_function.php" Он найдет ваш include_path в php.ini, чтобы найти файл.

2 голосов
/ 22 декабря 2008

Я делал это раньше ... это довольно сложный процесс, но не так уж плохо. Эта статья на zend.com должна рассказать вам все, что вам нужно знать:

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

edit: Я должен добавить, что есть лучшие способы достичь сути того, что вы пытаетесь сделать. Помните, что это будет еще больше загромождать пространство имен PHP (уже очень загроможденное). Возможно, вам лучше всего создать глобальный включаемый файл, содержащий все ваши наиболее часто используемые функции, которые вы включаете, где бы вы ни нуждались.

edit2: Перечитав свой первоначальный вопрос, вы сказали, что не хотите этого делать, но я все же думаю, что это, вероятно, лучший способ. Но удачи вам с расширением маршрута.

0 голосов
/ 22 декабря 2008

Если вы получили автозагрузку , вы можете перемещать функции как статические методы класса, такого как My_Functions.

Или для разделения его на несколько файлов вы можете использовать My_Functions_Math. Тогда вам нужно будет только загрузить нужные вам функции. А с автозагрузкой вам не нужно беспокоиться о включении файлов.

Вы не можете автоматически загружать функции пространства имен, поэтому, если вы хотите использовать автозагрузку, функции должны быть статическими методами в классе. Но вы можете использовать пространство имен, чтобы упростить замену класса в будущем и / или сократить длинное имя класса. Пример:

use My\Functions\Math as Math;
Math::calcThis($i);
0 голосов
/ 22 декабря 2008

Почему именно так сложно включить файлы туда, где они вам нужны?

Полагаю, директива auto_prepend_file PHP.ini может работать. Но это не очень рекомендуется.

...