Si "crea sus propios" getters y setters, estará realizando dos funciones para cada propiedad: getPropname()
y setPropname
. Al utilizar el "método mágico" setter/getter de PHP, no se escriben métodos individuales para cada propiedad. Puede establecer/obtener propiedades como si fueran públicas. Dentro de las funciones de sobrecarga, agrega la lógica específica de cada propiedad. Ejemplo:
public function __set($name, $value) {
switch ($name) {
case 'comments':
// do stuff to set comments
break;
case 'parent_user':
// do stuff to set parent user
break;
}
}
public function __get($name) {
switch ($name) {
case 'comments':
// do stuff to get comments
break;
case 'parent_user':
// do stuff to get parent user
break;
}
}
Ahora se puede acceder mediante el uso de los comentarios $obj->comments
a cualquier juego o conseguir.
Para lograr la funcionalidad anterior sin utilizar las sobrecargas, habría tenido que escribir 4 métodos diferentes en su lugar. Esto es realmente más acerca de la organización del código, tanto en términos del archivo real como en términos de crear una interfaz estandarizada para objetos dentro de un proyecto.
yo personalmente prefiero hacer lo que hace y escribir métodos distintos para cada propiedad que necesito un captador complejo/definidor. Para mí, está más claramente organizado, y hay una separación clara entre las propiedades "simples" de un objeto y las propiedades que tienen una mayor complejidad o relaciones de uno a muchos.
Reduce escribir. Eso es. –
Entonces, en el mismo lugar que normalmente hago: $ object-> setComment ('hello'), puedo hacer lo siguiente: __set ($ _ comment, 'hello'); ? Creo que esto no es a lo que te refieres, porque no estoy reduciendo el tipeo. Gracias de nuevo. – MEM
no llamas '__get' y' __set' directamente. Usted acaba de hacer esto: '$ objeto -> _ comentario = 'hola';' –