2015-03-15 2 views
0

Мне интересно, какой лучший способ расширить основное ядро ​​MAMP PHP, чтобы пользовательские функции были доступны во всем мире без необходимости импорта библиотек.Добавить пользовательскую функцию PHP в MAMP

Хороший пример того, что я хочу сделать, это иметь dd функцию (которая var_dump() + die(), вдохновленный Laravel) во всех моих местных проектов.

Эти методы должны быть доступны только на моем локальном environement (где установлена ​​моя версия MAMP) и только для целей отладки, поэтому нет страха нарушить функциональность PHP на конечном сервере.

Благодарим за помощь.

ответ

1

Есть два подхода для этого:

  1. Добавление модуля РНР, который загружается как и все другие модули. Модули, такие как соединители баз данных, математические библиотеки, функции перевода, что угодно. Все эти функции: не часть «php core». Ядро реализует только сам язык. Вы можете видеть, какие модули загружаются в настоящий момент и их конфигурации в вашей php-установке, используя функцию phpinfo(). Реализация модуля возможна, для этого вам необходимо знать c или C++ langauge. Интересный проект, вы узнаете много. Но это также огромные накладные расходы на то, что вы ищете.

  2. Внесите свои функции в обычный файл php где-нибудь за пределами обычной папки проекта. Затем зарегистрируйте этот файл в вашей конфигурации http-серверов php как «загружаемый для каждого исполняемого скрипта». Именно это делает функция auto_prepend_file. Таким образом, вы можете легко добавлять глобальные функции, всегда доступные во всех сценариях вашей локальной системы.

Поверь мне, вы хотите, чтобы второй подход попробовать :-)

+0

Сначала я попытаюсь выполнить второй подход! Кажется, очень прямо. Благодарю. – Yani

1

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

Вы можете создать файл типа "tools.php", который содержит определение функции dd, и в вашем приложении вы вызываете require "tools.php". Поместите версию разработки tools.php в каталог, доступный только на сервере разработки, в пути, которому присваивается наивысший приоритет в include_path.

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

+0

Моим дополнительным комментарием к этому является то, что, если можно, вы должны попытаться отойти от отладки по-печати и вместо этого взглянуть на настройку xdebug, чтобы вы могли проверить пространство памяти и пройти через функциональный поток вашего приложения. –

+0

Вы должны взглянуть на функцию auto_prepend_file, доступную на большинстве HTTP-серверов, поддерживающих php. :-) – arkascha

+0

@arkascha это отличная идея, спасибо! Я мог бы даже использовать это, чтобы переопределить некоторые вещи на моем примере dev php –

Смежные вопросы