Ultimamente, venho estudando mais PHP e OOP. Por necessidade, encontrei algumas dicas de como facilitar a minha vida com a OOP do PHP.
Por exemplo, aprendi que você consegue ter uma leve “tipagem” de parâmetros de uma função! Isso já ajuda bastante.
Também aprendi como fazer o autocomplete do Netbeans te ajudar um pouco mais, usando o PHPDoc.
Estrutura
Neste artigo, vamos lidar com a seguinte estrutura de pastas:
Sua pasta root
- Classes (pasta)
—- Pessoa.php
- index.php
A nossa classe será simples, apenas 2 campos (nome, dtnascimento) – cada um com seus getters e setters.
Ficará mais ou menos assim:
<?php
/**
* Description of Pessoa
*
* @author Diego
*
*/
class Pessoa {
private $nome;
private $dtnascimento;
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getDtnascimento() {
return $this->dtnascimento;
}
public function setDtnascimento($dtnascimento) {
$this->dtnascimento = $dtnascimento;
}
function __construct($dateTime = null) {
if($dateTime == null)
$dateTime = new DateTime();
$this->setDtnascimento($dateTime);
}
}
?>
Autocomplete (Intelisense) com netbeans e PHPDoc
Já se pegou tentando usar a orientação a objeto do PHP? Quando você sai de uma linguagem fortemente tipada (Java, C#) e cria um método em PHP, a primeira coisa que você se assusta é em como usá-lo.
Óbvio, estou falando do operador -> que é bem mais xarope de usar do que o . fato do PHP não ter tipagem. Ou seja, se o seu método deveria retornar um objeto da classe DateTime, fica complicado fazer o seguinte:
Sem sugestões. Ou seja, a ferramenta não vai te ajudar. Mas não se desespere (nem xingue)! Com PHPDoc, podemos dar uma melhorada na situação.
Basta ir até a classe e, no getter, adicionar o PHPDoc:
Sim, o PHPDoc é essa porrada de asteriscos e o @return (mas não limitado a isso!). No caso, especificamos que o retorno será a classe DateTime.
Voltemos ao exemplo anterior, tentando autocompletar o getDtnascimento:
Bem melhor, hein? Isso também vale para suas classes. Você pode ter um método que retorne “Porco”, “Linguica” ou qualquer outra classe que exista.
Tipagem dos parâmetros
Outro ‘probleminha’ da falta de tipagem do PHP: Num método que planejamos receber DateTime, podemos acabar com uma string ou int.
Em outras imagens, isso:
Vai gerar isso (se você usar o XDEBUG):
Mas não tema, com PHP sempre tem uma gambiarra não há problema! Nós podemos tipar o que o método/função espera:
Agora, nós temos até o intelisense do netbeans para nos dar a dica que o método espera um DateTime. Ainda é possível inserir um número no método, mas isso vai gerar um erro fatal:
Catchable fatal error: Argument 1 passed to Pessoa::setDtnascimento() must be an instance of DateTime, integer given, called in E:\ServidorPHP\Apache2\htdocs\Aprendizado\OOPArticle\index.php on line 13 and defined in E:\ServidorPHP\Apache2\htdocs\Aprendizado\OOPArticle\Classes\Pessoa.php on line 30
Pelo menos é bem descritivo. Já sabemos que passamos um valor errado, em qual método e o que ele espera realmente.
Getters and Setters
Última díca rápida! O Netbeans pode gerar automaticamente para você os getters and setters da classe. O problema é que ele fica um pouco escondido.
Basta ir até o arquivo da classe e apertar ALT + Insert. Surgirá um menu de contexto com as opções:
Tchans! Basta escolher os campos que você deseja gerar e pronto:
Achei interessante citar, pois esse menu fica meio escondido no netbeans com PHP ;).
Referências e fonte de estudo:
- NetTuts+
- edmondscommerce
- www.google.com.br (=P)
Passando a régua e fechando a conta
São algumas dícas que eu encontrei pra me ajudar com o PHP! Espero que sejam úteis para você também.
Até a próxima!






Ai sim hein Dona bacana essa dica ai do PhpDoc. Massa mesmo essa eu num sabia…