Действительно ли возможно заменить функцию в php (таком как почта) и заставить его сделать что-то еще?

Я думаю, что эта статья Википедии может помочь разъясниться.

http://en.wikipedia.org/wiki/DUAL_table

таблица DUAL является специальным подарком таблицы с одной строкой по умолчанию во всех установках базы данных Oracle. Это подходит для использования в выборе псевдостолбца, такого как SYSDATE или ПОЛЬЗОВАТЕЛЬ, таблица имеет единственный столбец VARCHAR2(1) под названием МАКЕТ, который имеет значение "X"

19
задан Benjamin 28 September 2018 в 11:48
поделиться

4 ответа

Существует расширение, позволяющее переопределять функции. Он предназначен для отладки, но я думаю, вы можете использовать его для своих нужд. Взгляните:

http://www.php.net/manual/en/function.override-function.php

Если вы хотите вызвать исходную функцию в своей версии, обязательно прочтите этот комментарий: http://no.php.net/manual/en/function.override-function.php#50821

21
ответ дан 30 November 2019 в 03:52
поделиться

То, что вы имеете в виду, обычно называется перегрузкой метода .

Хотя PHP обычно не поддерживается, на самом деле вы можете переопределить внутренние функции (а также пользовательские функции) с помощью runkit_function_remove () или runkit_function_redefine () . Конечно, чтобы использовать это, вы вам потребуется в значительной степени полный контроль над установкой PHP - поскольку он не связан с PHP, вам необходимо установить расширение runkit .

Опять же, в нормальной ситуации внутренние функции , а также пользовательские функции не могут быть переопределены (или перегружены) в PHP. Эта ситуация иллюстрирует преимущества обертывания некоторых внутренних функций пользовательской функцией.

10
ответ дан 30 November 2019 в 03:52
поделиться

Вы можете использовать регулярные выражения для замены имени функции в ваших файлах. Какое приложение вы используете, зависит от вас, но я бы порекомендовал слишком дорогое Powergrep (если оно вам не понадобится снова).

замените

   (\s+)mail([\s(]+)

на

   $1new_function_name$2

и

   ^mail([\s(]+)

] to

   new_function_name$1

Извините за мое regexp-fu, я не знаю, как искать пробелы ИЛИ начало строки в одном выражении.

0
ответ дан 30 November 2019 в 03:52
поделиться

Это называется перегрузкой функций и невозможно в родном PHP, но возможно с использованием расширений, описанных в других ответах. Документация PHP утверждает, что это вообще невозможно: источник , что неверно.

2
ответ дан 30 November 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: