Este artigo vem a complementar um outro que escrevi sobre orientação a objeto nos moldes do PHP4. Dessa vez venho trazendo o que houve de mudanças para o PHP5 com duas classes que exemplificam bem essas mudanças.
A finalidade desse exemplo é justamente abordar a orientação a objeto em PHP5 de acordo com o que foi exposto anteriormente, com a visão deste desenvolvedor que aqui escreve para expor o seu pouco estudo com o intuito de mostrar aos que ainda pensão em se aventurar nessa versão e suas modificações.
Agora vamos ao exemplo!
class Pessoa {
public $nome;
public $sobrenome;
public $nascimento;
protected $idade;
private $renda;
function __construct() {
$this->renda = 0;
}
function __destruct() {
unset($this);
}
public function setNascimento($nascimento) {
$ano; $mes; $dia; //explodindo a data
$ar = array();
$nascimento = eregi_replace("[-.]","/",$nascimento);
$nascimento = (eregi("(0[0-9]{1}|[12]{1}[0-9]{1}|3[01]{1})/(0[1-9]{1}|1[012]{1})/([12][0-9]{3})",$nascimento)) ? $nascimento : $this->exception(0);
$ar = explode("/",$nascimento);
$dia = $ar[0];
$mes = $ar[1];
$ano = $ar[2];
public function getIdade() {
return $this->idade;
}
protected function setRenda($v) {
$this->renda = $v;
}
function getRenda() {
return $this->renda;
}
function exception($exceptionNumber) {
switch ($exceptionNumber) {
case 0 : return "O formato da data de nascimento é dd/mm/yyyy. Corrija.";
default : return "Erro não previsto.";
}
}
}
Comentando o exemplo:
Como vemos na classe Pessoa, temos o método __construct, onde atribuímos ao atributo privado 'renda' o valor 0 (zero), __destruct, no qual simplesmente retiramos da memória o objeto ($this refere-se internamente à própria classe), os getters (getIdade e getRenda) e os setters (setNascimento e setRenda) e por fim um método exception no qual podemos prever alguns erros e criar mensagens personalizadas para os mesmos.
Um destaque que dou é para o método setNascimento que parece o mais complexo, porém é de fácil entendimento. Esse método não faz nada a mais que descobrir a idade do indivíduo, dando a sua idade exata, baseada na data de seus aniversário. Para validação da data usei alguns padrões de expressões regulares para que o desenvolvedor que use essa classe atribua um valor formatado no padrão dd/mm/YYYY ou d-m-Y, como queiram.
[1] Comentário enviado por removido em 18/08/2006 - 08:58h
Parabéns collapse pelo artigo bem explicado...
Acredito que ajudará iniciantes, e aqueles que ainda têm medo de migrar para o PHP5, a utillizarem cada vez mais essa versão...
E tomara que muita coisa melhore nas próximas versões do PHP. Como a manipulação de eventos (dito por você), e tipagem forte de atributos/métodos...
Uma outra funcionalidade que acho interessante seria a possibilidade de se criar propriedades, como o C# (DotNet).
[2] Comentário enviado por F4xl em 19/08/2006 - 01:07h
Muito bom o artigo, Evaldo!
Principalmente para quem está iniciando os estudos em PHP. Um comentário que eu gostaria de ler aqui é sobre como o PHP vai se comportar no mercado concorrendo com a plataforma .NET da Microsoft, uma vez que todos parecem querer migrar para ela.
[3] Comentário enviado por evandrofisico em 19/08/2006 - 20:52h
Para fazer um destructor em php4 é necessária uma pequena gambiarra, colocando dentro da funcao constructor um register_shutdown_function(array(&$this, 'quit'))
onde quit é o nome da funcao a ser executada antes do fim do script