AULA 1 INTRODUÇÃO AO PHP Em PHP AVANÇADO, além de voltar a focar o desenvolvimento em PHP interagindo com o banco de dados Postgresql, também iremos trabalhar com desenvolvimento com orientação a objetos. Agregaremos também a metodologia MCV também a utilização de uma framework. Conceitos de Orientação a Objetos Classe - Conceito A classe é uma estrutura que rege o comportamento de seus objetos, sendo caracterizada por possuir métodos e atributos. Da mesma forma que os tipos de variáveis regem o comportamento das variáveis, restringindo e limitando suas ações, as classes regem o comportamento e limitam as ações dos objetos. De tal forma, alguns livros citam as classes como um super-tipo de variável. Encapsulamento O conceito do encapsulamento consiste em esconder os atributos da classe de quem for utilizá-la. Isso se deve por dois motivos principais. Um é para que alguém que for usar a classe não a use de forma errada como, por exemplo, em uma classe que tem um método de divisão entre dois atributos da classe - se o programador não conhecer a implementação interna da classe, ele pode colocar o valor zero no atributo do dividendo, mas se a classe estiver corretamente encapsulada podemos impedir que o programador faça isso. 1
Você sabe o que é MVC??? MVC é um padrão de arquitetura de software que separa a informação (e as suas regras de negócio) da interface com a qual o usuário interage. É uma forma de estruturar seu projeto/aplicação de forma que a interface de interação (view) esteja separada do controle da informação em si (models), separação essa que é intermediada por uma outra camada controladora (controllers). O que é Model? Model é onde fica a lógica da aplicação. Podemos representar através das classes. As classes que desenvolveremos, tratarão de receber e armazenar dados no banco de dados. É importante frizar que um model deve ser desenvolvido para que o mesmo seja reutilizável para qualquer view ou controller. O que é View? View exibe os dados. Só isso. View não é só o HTML, mas pode ser qualquer tipo de retorno de dados, como PDF, Json, XML, os tokens de autenticação, entre outro. Qualquer retorno de dados para uma interface qualquer (o navegador, por exemplo) é responsabilidade da view. A view deve saber renderizar os dados corretamente, mas não precisa saber como obtê-los ou quando renderizá-los. O que é Controller? O controller diz quando as coisas devem acontecer. Só isso. É usado para intermediar a model e a view de uma camada. Por exemplo, para pegar dados da model (guardados em um banco) e exibir na view (em uma página HTML), ou pegar os dados de um formulário (view) e enviar para alguém (model). 2
Como faremos nossa estrutura Nas aulas teremos uma estrutura o mais aproximado possível das boas práticas do desenvolvimento MVC. A vantagem é a organização dos trechos de código, e sendo que cada um tem sua finalidade específica. Na pasta classes ficaram nossos modelos. Na pasta app ficarão nossos controles. Na pasta view ficarão as telas. c:\apache\htdocs\ -------------------------- classes -------------------------- app -------------------------- view Exemplo bem básicão: Model class Pessoa { public $nome; public function cadastrar() { $sql = "insert into pessoa values ('$this->nome'); $res = pg_query($sql); View <form method=post> 3
Nome pessoa <input type='text' name='nome'> <input type='submit' name='opcao' value='cadastrar'> </form> Controller if ($opcao == 'Cadastrar') { include 'class.pessoa.php'; $objeto = new Pessoa; $objeto->nome = $_POST['nome']; $objeto->cadastrar(); Frameworks Temos a opção de criar nossa própria forma de criar nossos controles e views ou optar a trabalhar com uma framework. Um exemplo de framework voltado para desenvolvimento é o jeasyui. O jeasyui faz muito bem essa distinção entre as camadas de modelo, visão e controle. O pré requisito é que, além de conhecer PHP e banco de dados, faz-se necessário conhecer Ajax (javascript). Neste caso parte do Controller é feito pelo PHP e parte feito pelo Javascript. Veremos exemplos mais para frente. 4
EMENTA CONTEÚDO QUE SERÁ ESTUDADO NO SEMESTRE 1 Interação com banco de dados 2 - Comandos de conexão com banco de dados 3 - Comandos e conceitos sobre PHP orientado a objetos (classes e métodos) 4 - Incluir, alterar, excluir e pesquisar dados em uma tabela, através de um programa em PHP utilizando classes e métodos tela simples Escrever uma classe, instanciar uma classe 5 - Incluir, alterar, excluir e pesquisar dados em uma tabela, através de um programa em PHP utilizando classes e métodos tela com relacionamento entre tabelas Escrever uma classe, instanciar uma classe 6 Conceito e comandos de Sessão 7 - Criação de relatórios com quebra e totalização 8 - Explicação das classes fpdf 9 - Gerando um relatório com a classe fpdf 5