setters / getters en un método
Pregunta
Solo una idea:
ejemplo (en PHP): para establecer el nombre: $ object- > name ('nombre'); para obtener el nombre: $ object- > name ();
Si no hay argumento: el método se usa como getter, de lo contrario, como setter. Para simples getters / setter. Estúpido, lo que sea, tal vez?
editar: para dar seguimiento a las respuestas: Realmente no me gusta obtener y configurar porque prefiero tener la interfaz lo más explícita posible. Cuando solo hay unas pocas propiedades, también es excesivo en mi humilde opinión. Así que me gustaría limitarlo a clases / objetos con un par de getters / setters explícitos.
Solución
Claro, podría hacerlo si tiene sentido en su aplicación, de lo contrario, simplemente usaría los captadores / configuradores estándar que ya se han configurado para usted. Su función podría verse más o menos así:
public function name($val = null)
{
if (is_null($val))
{
return $this->name;
}
else
{
$this->name = $val;
}
}
Otros consejos
El problema es que sería difícil de seguir. Prefiero usar __get y __set de PHP5 para que sea más natural obtener y establecer variables, y todos sabrán exactamente lo que estoy haciendo. IE:
class myClass { function __get($name) { return $this->array[$name]; } function __set($name, $value) { $this->array[$name] = $value; } function print() { echo $this->array['test']; } } $obj = new myClass; $obj->test = "Hi"; echo $obj->test; //echos Hi. $obj->print(); //echos Hi.
Se puede hacer usando el método mágico __call ().
class Test {
public function __call($name, array $args) {
$variable =& $this->$name;
if(!empty($args)) {
$variable = $args[0];
}
return $variable;
}
}