segunda-feira, 30 de junho de 2008

Checando tipagem de objetos por parâmetro

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...

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.

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.