formulario - funcion mail php
¿Es posible reemplazar una función en php(como el correo) y hacer que haga algo más? (4)
A lo que te refieres se le llama generalmente sobrecarga de métodos .
Aunque generalmente no es compatible con PHP, es posible que pueda redefinir las funciones internas (así como las funciones del usuario) usando runkit_function_remove()
o runkit_function_redefine()
. Por supuesto, para usar eso, deberá tener un control total sobre la instalación de PHP, ya que no está incluido con PHP, necesitará instalar la extensión runkit .
Nuevamente, en una situación normal, las funciones internas , así como las funciones del usuario, no se pueden redefinir (o sobrecargar) en PHP. Esta situación ilustra el beneficio de envolver algunas funciones internas con una función de usuario.
Quiero volver a escribir una función en PHP (digamos la función mail ()), y quiero hacerlo para que cuando llame a mail () a partir de ahora, cargue mi versión de mail () y no la versión php predeterminada. ¿Es esto posible en php?
La razón por la que quiero hacer esto es porque tengo miles de líneas de código que llaman a mail () y no quiero volver a escribirlas todas.
También para futuras referencias, en programación de computadoras, ¿cómo se llama cuando haces algo como esto?
Hay una extensión que te permite anular funciones. Está destinado a ser utilizado para la depuración, pero supongo que puede usarlo para sus necesidades. Echar un vistazo:
Si desea llamar a la función original dentro de su versión, asegúrese de leer este comentario: http://no.php.net/manual/en/function.override-function.php#50821
Puede usar expresiones regulares para reemplazar el nombre de la función en sus archivos. La aplicación que uses depende de ti, pero te recomendaría el Powergrep caro (a menos que no lo necesites de nuevo).
reemplazar
(/s+)mail([/s(]+)
a
$1new_function_name$2
y
^mail([/s(]+)
a
new_function_name$1
Lo siento por mi expresión regular, no sé cómo buscar espacios o el principio de la línea en una expresión.
Se llama sobrecarga de funciones y no es posible en PHP nativo, pero es posible usando las extensiones descritas en las otras respuestas. La documentación de PHP afirma que no es posible en absoluto: la source es incorrecta.