Em PHP, como tudo é dinâmico - até a tipagem de variáveis, é comum quando trabalhamos com objeto verificar seu tipo com o instanceof. Mas existem um jeito mais elegante que é o seguinte:
class carro {
... bla bla bla ...
}
class cavalo {
... bla bla bla ...
}
function imprimeCarros( carro $umCarro ) {
print $umCarro;
}
$meuCarro = new carro();
$meuCavalo = new cavalo();
imprimeCarros( $meuCarro );
imprimeCavalos( $meuCavalo );
Na primeira chamada de imprimeCarro vai ocorrer tudo ok. Na segunda chamada, como o tipo de objeto é diferente, vai estourar um erro. Sei que parece óbvio mas, deixa o código mais elegante...
segunda-feira, 30 de junho de 2008
Overload de Propriedades e Métodos em PHP
Essa dica é velha mas sempre é útil:
__get( $propriedade ) {}
Estoura quando se tenta ler o conteúdo de um atributo que não exista na sua classe. O parâmetro que ela recebe sempre será o nome da atributo inexistente.
Por exemplo:
class casa {
function __get( $propriedade ) {
throw new Exception("A propriedade $propriedade não existe no objeto " . get_class($this) );
}
}
__set( $propriedade, $valor ) {}
Exatamente como a de cima, porém, como é de se perceber, só estoura quando se tenta atribuir algum valor a um atributo inexistente. O primeiro o parâmetro é o nome do atributo, o segundo o valor. Acho que não precisa de exemplo neh ? Qualquer coisa adapte o de cima....
__call( $metodo , $argumentos ) {}
Este útimo serve para a chamada de métodos inexistentes... O primeiro parâmetro, obviamente é o nome do método e o segundo parâmetro é um array com os valores passados como parâmetros.
__get( $propriedade ) {}
Estoura quando se tenta ler o conteúdo de um atributo que não exista na sua classe. O parâmetro que ela recebe sempre será o nome da atributo inexistente.
Por exemplo:
class casa {
function __get( $propriedade ) {
throw new Exception("A propriedade $propriedade não existe no objeto " . get_class($this) );
}
}
__set( $propriedade, $valor ) {}
Exatamente como a de cima, porém, como é de se perceber, só estoura quando se tenta atribuir algum valor a um atributo inexistente. O primeiro o parâmetro é o nome do atributo, o segundo o valor. Acho que não precisa de exemplo neh ? Qualquer coisa adapte o de cima....
__call( $metodo , $argumentos ) {}
Este útimo serve para a chamada de métodos inexistentes... O primeiro parâmetro, obviamente é o nome do método e o segundo parâmetro é um array com os valores passados como parâmetros.
segunda-feira, 16 de junho de 2008
Primeiro Livro de RoR é Brasileiro
Isso mesmo, o primeiro livro de RoR 2.1 é tupiniquim. Graças ao trabalho de Carlos Brando e Marcos Tapajós .
Para baixar, clique aqui.
Para baixar, clique aqui.
Assinar:
Comentários (Atom)