Getter e setter genéricos
Noite pessoar!
Eu já mexi com PHP há um tempo, mas não orientado a objeto. Estou me aventurando nisso depois de ter trabalho um período com .NET, onde fiquei acostumado a acessar os atributos de objetos da seguinte maneira:
Object obj = new Object();
obj.Property = "";
String str = obj.Property;
E nessa migração vi que os autores de tutoriais de PHP utilizam um getter e um setter para cada atributo. Pensei então, se seria possível acessar da mesma forma que no .NET, utilizando apenas o nome do atributo.
Eu bolei o seguinte código:
class ObjectClass
{
private $property1;
private $property2;
function __get( $name )
{
$get = '$this->get' . ucfirst( $name ) . '();';
eval( '$get = ' . $get );
return $get;
}
function __set( $name, $value )
{
$set = '$this->set' . ucfirst( $name ) . '( "' . $value . '" );';
eval( $set );
}
private function getProperty1()
{
return $this->property1;
}
private function setProperty1( $property1 )
{
$this->property1 = $property1;
}
private function getProperty2()
{
return $this->property2;
}
private function setProperty2( $property2 )
{
$this->property2 = $property2;
}
}
A chama então ficaria assim:
$obj = new ObjectClass;
$obj->property1 = "";
$str = $obj->property1;
Vocês acham que isso poderia ser usado? Se não, por qual motivo?
Existe um pequeno problema nesta maneira: nas IDEs, os atributos não são listados quando aponta-se o objeto.
Ou então, se eu nomeasse os getters e setters com o mesmo nome do atributo, seria viável?
Desde já, agradeço a atenção!
Abraço!
Discussão (3)
Carregando comentários...