<?php
class Usuario
{
private $nome;
private $profissao;
public function setNome($nome)
{
$this->nome = $nome;
return $this;
}
public function getNome($nome)
{
return $this->nome;
}
public function setProfissao($profissao)
{
$this->profissao = $profissao;
return $this;
}
public function getProfissao($profissao)
{
return $this->profissao;
}
function getValueByAttributeName($name)
{
if (property_exists($this, $name)) {
return $this->$name;
}
}
function getValueByMethodName($name)
{
return $this->$name();
}
}
function getAllAttributes()
{
foreach ($this as $key => $value) {
if (property_exists($this, $key)) {
$array[] = $value;
}
}
return $array;
}
}
$usuario = new Usuario();
$usuario->setNome('Nome Qualquer');
$usuario->setProfissao('Profissão Qualquer');
$data = $usuario->getAllAttributes();
echo '<pre>';
echo '</pre><br>';
echo $usuario->getValueByMethodName('getnome');
echo '<br>';
echo $usuario->getValueByAttributeName('nome');
PD9waHAKCmNsYXNzIFVzdWFyaW8KewogICAgIHByaXZhdGUgJG5vbWU7CiAgICAgcHJpdmF0ZSAkcHJvZmlzc2FvOwoKICAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Tm9tZSgkbm9tZSkKICAgICB7CiAgICAgICAgICR0aGlzLT5ub21lID0gJG5vbWU7CiAgICAgICAgIHJldHVybiAkdGhpczsKICAgICB9CgogICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROb21lKCRub21lKQogICAgIHsKICAgICAgICAgcmV0dXJuICR0aGlzLT5ub21lOwogICAgIH0KCiAgICAgcHVibGljIGZ1bmN0aW9uIHNldFByb2Zpc3NhbygkcHJvZmlzc2FvKQogICAgIHsKICAgICAgICAgJHRoaXMtPnByb2Zpc3NhbyA9ICRwcm9maXNzYW87CiAgICAgICAgIHJldHVybiAkdGhpczsKICAgICB9CgogICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcm9maXNzYW8oJHByb2Zpc3NhbykKICAgICB7CiAgICAgICAgIHJldHVybiAkdGhpcy0+cHJvZmlzc2FvOwogICAgIH0KCiAgICAgZnVuY3Rpb24gZ2V0VmFsdWVCeUF0dHJpYnV0ZU5hbWUoJG5hbWUpCiAgICAgewogICAgICAgIGlmIChwcm9wZXJ0eV9leGlzdHMoJHRoaXMsICRuYW1lKSkgewogICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWU7CiAgICAgICAgfQogICAgIH0KCiAgICBmdW5jdGlvbiBnZXRWYWx1ZUJ5TWV0aG9kTmFtZSgkbmFtZSkKICAgIHsKICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCR0aGlzLCAkbmFtZSkpIHsKICAgICAgICAgICByZXR1cm4gJHRoaXMtPiRuYW1lKCk7CiAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0QWxsQXR0cmlidXRlcygpCiAgICB7CiAgICAgICAgJGFycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKHByb3BlcnR5X2V4aXN0cygkdGhpcywgJGtleSkpIHsKICAgICAgICAgICAgICAgICAkYXJyYXlbXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICB9IAogICAgICAgICByZXR1cm4gJGFycmF5OwoKICAgIH0KfQoKJHVzdWFyaW8gPSBuZXcgVXN1YXJpbygpOwoKJHVzdWFyaW8tPnNldE5vbWUoJ05vbWUgUXVhbHF1ZXInKTsKJHVzdWFyaW8tPnNldFByb2Zpc3NhbygnUHJvZmlzc8OjbyBRdWFscXVlcicpOwokZGF0YSA9ICR1c3VhcmlvLT5nZXRBbGxBdHRyaWJ1dGVzKCk7CgplY2hvICc8cHJlPic7CnByaW50X3IoJGRhdGEpOwplY2hvICc8L3ByZT48YnI+JzsKZWNobyAkdXN1YXJpby0+Z2V0VmFsdWVCeU1ldGhvZE5hbWUoJ2dldG5vbWUnKTsKZWNobyAnPGJyPic7CmVjaG8gJHVzdWFyaW8tPmdldFZhbHVlQnlBdHRyaWJ1dGVOYW1lKCdub21lJyk7