ivermectina en gotas para humanos ivermectina 6mg pra q serve how many mg of ivermectin for scabies can humans use ivermectin paste ivermectina praziquantel perros daily ivermectin ivermectin sensitive dog breeds ivermectin rabbit ear mites prevention

PHP: La forma "elegante" de armar Getter & Setter


Hola, mucho tiempo sin escribir.

por lo general cuando creaba una clase con objetos, al momento de crear los getters y los setters quedaba algo así:

[php]
<?php
class Clase
{
private $atributo;
function setatributo($nuevoatributo)
{
$this->atributo = $nuevoatributo;
}
function getatributo()
{
return $this->atributo;
}
}
?>
[/php]

ahora “armé” una forma más “elegante” de hacer lo mismo, parecido al gran Getter y Setter de C# que por lejos es lo más elegante que hay.

[php]
<?php
class Clase
{
private $atributo;
function atributo($nuevoatributo="")
{
if(!empty($nuevoatributo))
$this->atributo = $nuevoatributo;
else
return $this->atributo;
}
}
?>

[/php]

Explicación simple, si el atributo $nuevoatributo no está vacio entonces le asignamos el valor, por el contrario si está vacío devolvemos el valor de él.

En realidad no es mucho código menos, pero sirve para que se vea más presentable el código [y para evitarnos andar escribiendo get… y set :P].

Saludos


2 repuestas a “PHP: La forma "elegante" de armar Getter & Setter”

  1. PHP soporta setters y getters

    public function __get($property) {
    if(array_key_exists($property,get_class_vars(__CLASS__))) {
    return $this->$property;
    } else {
    die(“Método Getter inexistente da classe “.__CLASS__.””);
    }
    public function __set($property, $value) {
    if (array_key_exists($property, get_class_vars(__CLASS__))) {
    $this->$property = $value;
    } else {
    die(“Método Setter inexistente da classe “.__CLASS__.””);
    }

  2. Vaya, es ingenioso; disminuye notablemente la cantidad de funciones, la dificultad del nombre con su camelcase etc… Me parece realmente elegante, de verdad :D. Por otro lado, resuelves un posible problema, dificil pero posible: que sobre un mismo objeto cargado, si es que se puede, que no lo se, desde dos terminales, se puedan permitir get y set simultáneo; ¿De intentarlo, uno podría teóricamente suceder indeseadamente antes que el otro (en el supuesto de geters y seters, digo)?.

Responder a David Rullán Díaz Cancelar respuesta

Su dirección de correo no se hará público.

This site uses Akismet to reduce spam. Learn how your comment data is processed.