set_state metodos method _call php magic-methods

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

  1. Las búsquedas de texto no encuentran las funciones

  2. El sistema es más difícil de entender , especialmente para los recién llegados

  3. 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.