2010-05-04 22 views
11

cuando uso la doctrina tropiezo con estas 2 palabras: accesor y mutador.acceso y mutador?

¿son estos solo usados ​​en la doctrina o son específicos para php?

y ¿qué significan?

gracias

Respuesta

22

Sólo son términos extraños captadores y definidores.

class MyClass 
{ 
    private $prop; 

    // Accessor (or Getter) 
    public function getProp() 
    { 
     return $this->prop; 
    } 


    // Mutator (or Setter) 
    public function setProp($value) 
    { 
     $this->prop = $value; 
    } 

} 
+4

Y para aclarar, son términos comunes utilizados en la programación orientada a objetos, sin importar el idioma o el marco. – nickf

+1

entonces, ¿por qué los llaman accesadores y mutadores en lugar de getters y setters? no son métodos mágicos, es decir, si escribo setProp() pero no he definido un método para eso, ¿no se creará automáticamente? –

+1

@fayer accessor y mutador son términos más generales utilizados en informática. getter y setter son una forma más casual, supongo ... tal vez una jerga. Mientras lo sepa, no creará mágicamente las variables para usted en php ... necesita ver las especificaciones ... bastante seguro de que no lo hará. – m0s

2

Si entiendo correctamente estos 2 son específicos para cualquier lenguaje de programación orientado a objetos. El punto es que el acceso es un método o una función que proporciona acceso a campos privados en su clase y el método de mutador permite modificar los campos privados. Puedo seguir escribiendo sobre esto, pero sugiero que solo googlees estos, y obtendrás mucha información al respecto. Es todo acerca de la encapsulación < - sugiero que busques ese término también.

+0

Me gusta pensar en ellas como funciones regulares que solo sirven para algún propósito común conocido ... nada más. – m0s

0

No son solo términos diferentes para getters y setters, al menos no en Laravel.

Para citar la documentación: "Los modificadores de acceso y mutantes le permiten formatear atributos Eloquentes al recuperarlos de un modelo o establecer su valor".

https://laravel.com/docs/master/eloquent-mutators

Por lo tanto, se podría decir que los captadores y definidores son un subconjunto de los descriptores de acceso y mutadores que cambian los datos en un factor de cero.

Puesto de otra manera, si quisiera obtener un "costo" de campo sin formato de una tabla, usaría un getter. Si quisiera que ese campo se exprese y formatee en libras y peniques, entonces podría usar un accesorio.

Hay otras maneras en que podría hacerlo, pero esa es una opción.

+0

¿Podría explicar "cambiando por un factor de cero"? ¡Gracias! –

+0

Claro. Los usuarios y mutadores cambian un valor antes de guardar o devolver el nuevo valor. Setters y obtenerlo no cambian el valor. Entonces, cuando dije "por un factor de cero" solo quise decir "sin cambios". Usted acaba de agregar nada al valor. – Puzbie

Cuestiones relacionadas