Начальная загрузка всех функций в PHP - PullRequest
2 голосов
/ 04 января 2009

Это немного сумасшедшая идея, но есть ли способ загрузить все функции, которые есть в php, без использования вспомогательной функции для вызова функций.

На самом деле я имею в виду вызов некоторого кода или функции до и после каждого вызова основной функции.

Пример:

<?php
echo "Hello";
?>

Но эти функции будут вызываться до и после эхо:

<?php
function pre_echo()
{
  do_something();
}

function post_echo()
{
  do_something_else();
}
?>

Ответы [ 5 ]

5 голосов
/ 04 января 2009

«Начальная загрузка» здесь не является правильным термином - то, что вы хотите сделать, называется Аспектно-ориентированное программирование , и да, это можно сделать в PHP . Тем не менее, это требует значительных изменений в том, как вы обычно используете PHP.

1 голос
/ 04 января 2009

Почему вы хотите это сделать? Если вы хотите профилировать свой код, используйте профилировщик, например Xdebug

1 голос
/ 04 января 2009

Так же, как к вашему сведению, ваш пример выбрал нечто, что на самом деле не является функцией в самом строгом смысле, echo - это языковая конструкция, которая обрабатывается внутренними средствами PHP по-разному.

Я думаю, что есть только два способа достичь того, чего вы хотите:

  • Предварительная обработка вашего PHP-кода для дополнения это с переопределенными вызовами функций
  • или измените внутренние компоненты PHP на поддержка перехвата всех вызовов функций
0 голосов
/ 07 января 2009

вы можете сделать это. вам нужно изменить файл php.ini

в директивах

auto_prepend_file
auto_append_file

например

auto_prepend_file=/home/php/run_before.php
auto_prepend_file=/home/php/run_after.php

тогда

<?php echo('hi'); ?>

вывод будет:

# something before
hi
# something after
0 голосов
/ 04 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...