PHP5 e a orientação a objetos Classes e Objetos PHP4 classes simples class Var { var $a; var $b; var $c; function Var($a,$b,$c) { ///atrubuiçoes } } $var = new Var('teste', 'pronto', 'frango'); PHP5 classes mais completas, uso de padrões class Var { private $a; private $b; private $c; public function __construct($a,$b,$c) { ///atrubuiçoes } //getters //setters } $var = new Var('teste', 'pronto', 'frango'); Construtores e Destrutores class Var { private $a; private $b; private $c; public function __construct($a,$b,$c) { ///atrubuiçoes } public function __destruct() { unset($this); } } exemplo Visibilidade Propriedades e Métodos public protected private exemplo Abstração Classes e Métodos Não podem ser instanciadas exemplo Interfaces Não podem ser instanciadas Metodos herdados devem ser implementados interface implements exemplo Iteração com Objetos foreach Mostra as propriedades publicas $classe = new NovaClasse(); foreach($classe as $chave => $valor) { print "$chave => $valor\n"; } Iteração com Objetos Interface Iterator Qualquer objeto define sua própria maneira de iterar Todos os métodos devem ser implementados exemplo Iteração com Objetos Interface IteratorAggregate Qualquer objeto define sua própria maneira de iterar Nem todos os métodos devem ser implementados Devemos ter uma classe Iterator para retornar Podemos criar collections exemplo Exceções Objeto Exception Throw e try/catch Controle de fluxo por exceções exemplo Indução de tipo Maior controle sobre os dados Mais confiabilidade Somente para arrays e objetos class MyClass { public $var = 'Frango com Bacon'; } function MyFunction (MyClass $foo) { echo $foo->var; } $myclass = new MyClass; MyFunction($myclass); Padrões de Projeto ( design patterns ) Reutilização de códigos Melhores práticas de programação Solução para problemas do dia a dia Padrões de Projeto ( design patterns ) Factory Criação de objetos em tempo de execução Fazer verificações antes de criar um objeto exemplo Padrões de Projeto ( design patterns ) Singleton Única instância de uma determinada classe exemplo Padrões de Projeto ( design patterns ) Outros Padrões Abstract Factory Composite Facade ... Final =D PHP ( www.php.net ) Design Patterns ( http://www.industriallogic.com/papers/learning.html ) pQui Linux ( http://pqui.codigolivre.org.br/ ) Pedro Ivo Branquinho Gimenes [email protected]