metodos - php<__ invoke
¿Son los métodos mágicos las mejores prácticas en PHP? (4)
¿Son los métodos mágicos las mejores prácticas en PHP?
Al menos, algunas de estas funciones mágicas son recomendadas por Google:
Evite escribir setters y getters ingenuos
Al escribir clases en PHP, puede ahorrar tiempo y acelerar sus scripts trabajando directamente con las propiedades de los objetos, en lugar de escribir elaboradores y getters ingenuos. En el siguiente ejemplo, la clase dog usa los métodos setName () y getName () para acceder a la propiedad del nombre.
class dog { public $name = ''''; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } }
Tenga en cuenta que setName () y getName () no hacen más que almacenar y devolver la propiedad del nombre, respectivamente.
$rover = new dog(); $rover->setName(''rover''); echo $rover->getName();
Establecer y llamar a la propiedad de nombre directamente puede ejecutarse hasta un 100% más rápido , así como reducir el tiempo de desarrollo.
$rover = new dog(); $rover->name = ''rover''; echo $rover->name;
Enlace original: http://code.google.com/speed/articles/optimizing-php.html
Versión archivada: https://web.archive.org/web/20120208060457/http://code.google.com/speed/articles/optimizing-php.html
De todos modos, estos métodos pueden no ser efectivos, pero no están desaprobados en absoluto.
No creo que los métodos mágicos sean la mejor o la peor práctica: dependiendo de lo que quieras lograr puedes usarlos o no ... Lo que quiero decir es que no tienes que modificar tu código para poder usarlos, pero si es necesario, no hay ningún problema.
Si tienes un objeto con 3 y solo 3 atributos, no necesitas usar magic setters / getters, pero en algunos casos avanzados son una gran manera de hacer cosas muy complejas (sistemas ORM, etc.)
Tal vez algunos de ellos están en desuso, no sé, pero la mayoría de ellos no.
No lo creo. Mi IDE no puede mostrarme "sugerencias" para el setter mágico y getters. A pesar de que el código es más difícil de depurar a veces.
Prefiero no usarlos, mejor generar los métodos necesarios (como muchos setters y getters) por mi ide.
contras
Las búsquedas de texto no encuentran las funciones
El sistema es más difícil de entender , especialmente para los recién llegados
Las herramientas de refactorización pueden fallar con más frecuencia
En general, los métodos mágicos hacen cosas entre bastidores y el programador puede no darse cuenta de que está sucediendo lo que hace que la depuración sea más difícil.
Cuando busca las funciones (u otros símbolos) no puede encontrar todas las coincidencias, se convierte en una pesadilla eliminar el código anterior y este temor puede hacer que el código muerto se acumule en la base del código. Si se elimina el código muerto, puede causar roturas en lugares desconocidos.