У меня есть несколько функций, которые я написал и регулярно использую на своих серверах, есть ли способ добавить их в ядро, поэтому мне не нужно включать их из внешних файлов?
Я запускаю PHP5
Вы можете добавить свои библиотеки в качестве расширения PEAR . Затем вы можете добавить его в локальный репозиторий PEAR . Груша добавлена в путь включения по умолчанию в php.ini. Затем вы можете просто использовать «груша установить myextension» на своих машинах.
Если это C-функции, с которыми вы работаете в php (php extensions), вы можете сделать что-то подобное с PECL .
Я сделал это раньше … это довольно сложный процесс, но не так уж плохо. Эта статья на zend.com должна рассказать вам все, что вам нужно знать:
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/
edit: Я должен добавить, что есть лучшие способы достичь сути того, что вы пытаетесь сделать. Помните, что выполнение этого еще больше загромождает пространство имен PHP (уже очень загроможденное). Вам, вероятно, лучше всего сделать глобальный файл include, в котором есть все ваши наиболее часто используемые функции, которые вы включаете там, где вам это нужно.
edit2: Перечитав свой первоначальный вопрос, вы сказали, что не хотите этого делать, но я все же думаю, что это, наверное, лучший способ. Но вам повезло с расширением маршрута.
Если вы хотите, чтобы ваша функция всегда была доступна, не включая ее, сделайте следующее:
Создайте свою функцию в файле 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, чтобы найти файл.
Почему именно так сложно включать файлы, в которых они вам нужны?
Я полагаю, что директива auto_prepend_file PHP.ini может работать. Но это не рекомендуется.
Если вы получили автозагрузку , вы можете переместить функции как статические методы класса, например My_Functions.
Или для деления его на большее количество файлов вы можете использовать My_Functions_Math. Тогда вам нужно будет только загрузить нужные вам функции. И с автозагрузкой вам не нужно беспокоиться о включении файлов.
Вы не можете использовать функции автозагрузки имен, поэтому, если вы хотите использовать autoload, функции должны быть статическими методами в классе. Но вы можете использовать пространство имен, чтобы упростить замену класса fx в будущем и / или сократить длинное имя класса. Пример:
use My\Functions\Math as Math; Math::calcThis($i);