Beruflich Dokumente
Kultur Dokumente
Sumrio
1. Linguagem de Banco de Dados (SQL) .......................................................................................................................................... 3 1.1. Conceito/Definio .................................................................................................................................................... 4 1.2. Banco de Dados Relacionais ...................................................................................................................................... 4 1.3. Operadores ................................................................................................................................................................. 4 1.3.1. Operadores Lgicos ............................................................................................................................................. 4 1.3.2. Operadores Relacionais ....................................................................................................................................... 4 1.3.3. Operadores Aritmticos ....................................................................................................................................... 4 1.4. Tipologia de Comandos SQL..................................................................................................................................... 5 1.4.1. Comandos DDL ................................................................................................................................................... 5 1.4.2. Comandos DML .................................................................................................................................................. 6 1.4.3. Comandos DQL ................................................................................................................................................... 7 1.4.4. Comandos DCL ................................................................................................................................................... 7 2. Lgica de Programao .................................................................................................................................................................... 9 2.1. Conceito/Definio .................................................................................................................................................. 10 2.2. Algoritmos ............................................................................................................................................................... 10 2.2.2. Desenvolvendo um Algoritmo ........................................................................................................................... 10 2.2.2.1. Regras de Construo .................................................................................................................................... 10 2.2.2.2. Anlise .......................................................................................................................................................... 10 2.2.2.3. Desenvolvimento da Lgica (Portugol) ........................................................................................................ 11 2.2.2.4. Representao Grfica .................................................................................................................................. 11 2.3. Estrutura de Dados ................................................................................................................................................... 12 3. Linguagem de Marcao (HTML) ................................................................................................................................................ 13 3.1. Conceito/Definio .................................................................................................................................................. 14 3.2. Comandos Introdutrios .......................................................................................................................................... 14 3.3. Criando um Formulrio ........................................................................................................................................... 15 4. Linguagem de Manipulao Dinmica (JavaScript) ............................................................................................................. 17 4.1. Conceito/Definio .................................................................................................................................................. 18 4.2. Comandos Introdutrios .......................................................................................................................................... 18 5. Modelagem Banco Dados (Diagramas) .................................................................................................................................... 19 5.1. Conceito/Definio .................................................................................................................................................. 20 5.2. Conceitos Principais Utilizados ............................................................................................................................... 20 5.2.1. Associao ............................................................................................................................................................... 20 5.2.2. Generalizao .......................................................................................................................................................... 20 5.3. Modelando Diagrama da Fase de Projeto ................................................................................................................ 20 6. Linguagem PHP Orientada Objeto ....................................................................................................................................... 22 6.1. Conceito/Definio .................................................................................................................................................. 23 6.2. Interfaces, Classe e Objeto ....................................................................................................................................... 24 6.2.1. Visibilidade ....................................................................................................................................................... 24 6.2.2. Variveis e Constantes ...................................................................................................................................... 25 6.2.2.1. Tipos de Variveis......................................................................................................................................... 25 6.2.2.2. Apontador This .......................................................................................................................................... 25 6.2.3. Camadas de Desenvolvimento (PHP) ................................................................................................................ 25 6.2.4. Rotina de Programao ...................................................................................................................................... 26 6.3. Herana, Polimorfismo e Encapsulamento .............................................................................................................. 26 6.3.1. Herana .............................................................................................................................................................. 26 6.3.1.1. Definio/Conceito ....................................................................................................................................... 26 6.3.1.2. Metodologia de Implementao .................................................................................................................... 26 6.3.2. Polimorfismo ..................................................................................................................................................... 28 6.3.3. Encapsulamento ................................................................................................................................................. 28 6.4. Estruturas de Controles ............................................................................................................................................ 28 6.4.1. Estruturas de Condies .................................................................................................................................... 28 6.4.2. Estruturas de Caso ............................................................................................................................................. 29 6.4.3. Estruturas de Repeties .................................................................................................................................... 30 6.4.3.1. Lao de Repetio Para (For) ........................................................................................................................ 30 6.4.3.2. Lao de Repetio Para Cada (Foreach) ....................................................................................................... 30 6.4.3.3. Lao de Repetio Enquanto (While) ........................................................................................................... 31 6.4.3.4. Lao de Repetio Faa Enquanto (Do .. While) .......................................................................................... 31 7. Projeto Exemplo ............................................................................................................................................................................... 32 7.1. Descrio ................................................................................................................................................................. 33
[Digite texto]
7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9. 7.10. 7.11. 7.12. 7.13. 7.14.
Classe/Tabela Banco de Dados ................................................................................................................................ 33 Implementao Camada DAO (Conexo) ............................................................................................................... 33 Implementao Camada DTO (Modelagem) ........................................................................................................... 34 Implementao Camada DAO (Mtodos Manipulao Dados) ............................................................................... 35 Implementao Camada CTR (Mtodos de Controle Dados) .................................................................................. 37 Implementao Camada INT (Interface de Dados).................................................................................................. 38 Implementao Camada VIEW (Visual) ................................................................................................................. 39 Sesses e Controle de Login .................................................................................................................................... 41 Camada DTO ........................................................................................................................................................... 42 Camada DAO ........................................................................................................................................................... 43 Camada CTR ........................................................................................................................................................... 45 Camada INT ............................................................................................................................................................. 45 Camada VIEW ......................................................................................................................................................... 47
[Digite texto]
[Digite texto]
1.1. Conceito/Definio
A SQL consiste na sigla de abreviao para Structured Query Language, ou traduzida para o portugus Linguagem de Consulta Estruturada, essa linguagem baseia-se em uma forma de pesquisa declarativa para bancos de dados relacionais. Possui vrios grupos de comando, aqui destacaremos os principais e mais utilizados sendo eles os grupos DDL, DML, DQL e o DCL.
1.3. Operadores
Baseia-se em algumas formas de comparaes e interaes feitas com dados provindos do Banco de Dados, so trs tipo de operadores mais utilizados, sendo eles, Lgico, Relacionais e Aritmticos.
[Digite texto]
So os operadores aritmticos comumente utilizados, os quais podem ser utilizados pelo SQL, porm somente podero ser utilizados em colunas do tipo numrico. Operadores: + * / Descrio: Soma Subtrao Multiplicao Diviso
[Digite texto]
alterao do index criado em uma tabela do banco de dados, o Drop Index, responsvel pela excluso de index criado em uma tabela, o Drop View, responsvel pela excluso da viso criada em um banco de dados.
Comando Insert (Insero): Comando responsvel pela insero de dados em uma tabela. Sintaxe: INSERT INTO nometabela(campo1, campo2, campo3) VALUES (valor1, valor2, valor3); Regras: - valores numricos no utilizam as aspas simples, em valores de texto e data obrigatrio a utilizao das aspas simples. - valores de data alm de utilizar as aspas, devem ser inseridas na forma inglesa curta. Ex: 2012-05-31. - valores numrico com decimais devem ser inseridos sem separao de milhares e com uma virgula na separao decimal (mtodo ingls). Ex: 1878.90.
Comando Delete (Remoo) Comando responsvel pela remoo de dados de uma tabela. Sintaxe: DELETE FROM nometabela WHERE comparacao=1; Regras: - quanto aos dados utilizam-se as mesmas normas do insert. Recomendaes: - esse comando por ser um comando de remoo de dados, se torna necessrio um maior cuidado, pois, remover dados de um banco uma ao de alto risco para os dados, recomenda-se um backup sempre quando for ser utilizado. - utilizao mais comum desse comando sempre acompanhado da instruo WHERE.
Comando Update (Atualizao): Comando responsvel pela atualizao de dados de uma tabela. Sintaxe: UPDATE nometabela SET nomecampo=valorcamponovo, camponovo2 WHERE comparao=1; nomecampo2=valor
[Digite texto]
Regras: - quanto aos dados utilizam-se as mesmas normas do insert. Recomendaes: - esse comando por ser um comando de remoo de dados, se torna necessrio um maior cuidado, pois, remover dados de um banco uma ao de alto risco para os dados, recomenda-se um backup sempre quando for ser utilizado. - utilizao mais comum desse comando sempre acompanhada da instruo WHERE.
[Digite texto]
Sintaxe: GRANT ALL ON *.* TO user@localhost IDENTIFIED BY 'senha; Recomendao: - Utilizar somente quando houver criao de usurios novos ou alteraes de privilgios. Comando Revoke (Revogar Privilgios) Comando responsvel por revogar ou barrar privilgios de um usurio no Banco de dados. Sintaxe: REVOKE <comando> ON <tabela> TO <usurio>; Recomendao: - Utilizar somente quando houver a necessidade de retirar privilgios de algum usurio ou restringir permisso de acesso aos dados armazenados.
[Digite texto]
2. Lgica de Programao
[Digite texto]
2.1. Conceito/Definio
Lgica de Programao baseia-se em uma forma de escrever um programa de computador utilizando uma linguagem de fcil entendimento para ns seres humanos, esse tipo de lgica necessrio para todas as pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois permite definir uma sequncia lgica para um bom e melhorado desenvolvimento.
2.2. Algoritmos
Trata-se de uma sequncia finita de passos que um sistema deve seguir para a execuo de alguma tarefa, pode se comparar um algoritmo com uma receita de bolo onde voc segue o passo a passo at obter o resultado final que no caso seria o bolo pronto.
2.2.1. Conceito/Definio
Um programa de computador baseado em um algoritmo escrito numa linguagem de computao como Pascal, Java, PHP, C#, Visual Basic, etc..., sendo assim o estudo de Algoritmos se torna imprescindvel para os interessados em aprender alguma das linguagens de programao, pois como j dito anteriormente o Algoritmo define toda a sequncia de acontecimentos dentro de um sistema, at a obteno de um resultado final satisfatrio.
2.2.2.2. Anlise
10
[Digite texto]
Qualquer tarefa que siga um determinado padro poder ser descrita utilizando um algoritmo, como essas: COMO FAZER PARA ESTACIONAR O CARRO ou ento, CALCULAR A MDIA DE APROVAO DE ALUNOS EM UM CURSO DE INFORMTICA Para isso devemos primeiramente dividir os problemas em trs fases fundamentais. ENTRADA PROCESSAMENTO SAIDA
Sendo que: ENTRADA: So os dados de entrada do algoritmo. PROCESSAMENTO: So os procedimentos usados para chegar ao resultado final. SADA: So os dados j processados.
onde Ser calculado a mdia, caso seja maior ou igual a 7 o aluno ser Aprovado, caso contrrio, ser Reprovado.
Para criar o algoritmo proposto, faremos trs perguntas: a) Quais so os dados de entrada? R: Os dados de entrada so N1, N2, N3 e N4, onde N=Nota. b) Qual ser o processamento a ser utilizado? R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro), ou seja, (P1 + P2 + P3 + P4) / 4 c) Quais sero os dados de sada? R: O dado de sada ser a mdia final.
Abaixo o Algoritmo desenvolvido: Inicio; Entrada com 4 notas; Calcular a mdia; Se Media maior ou igual a 7; Se Maior imprime Aprovado; Se Menor imprime Reprovado; Fim;
[Digite texto]
Fim ->
12
[Digite texto]
13
[Digite texto]
3.1. Conceito/Definio
HTML a abreviao para a expresso HyperText Markup Language, e foi desenvolvida por Tim Barners Lee na dcada de 1990, consiste em uma linguagem de marcao utilizada para criao de paginas WEB, onde criamos paginas baseadas em HTML, que podem ser interpretados por navegadores web, suas especificaes so atualmente controladas pela W3C (World Wide Web Consortium). Nessa Linguagem os elementos so definidos atravs de tags (etiquetas ou marcaes), que tem a funo de formatao de texto, formulrios, links, imagens, tabelas, entre outros. Os browsers (navegadores) tem a funo de identificar essas tags e apresentarem de uma forma especfica cada uma, a criao de um documento HTML e to simples que pode ser feita no Bloco de Nota (Windows) ou Editor de Texto (Linux e Mac). Como tudo em informtica a linguagem HTML tambm possui suas evolues as quais so mais atuais a XHTML e HTML5, onde a XHTML baseia-se em uma linguagem HTML com uma sintaxe (forma de escrita) mais rigorosa e padronizada seguindo as caractersticas do XML e o HTML5 baseia-se na quinta verso do HTML que traz novos recursos, principalmente na manipulao de contedo grfico e multimdia, esta verso do HTML est muito robusta, porm atualmente h algumas incompatibilidades com os navegadores.
<p> <h1>
</p> </h1>
<form>
</form>
<fieldset>
</fieldset>
14
[Digite texto]
Marcador utilizado para a criao de colunas comuns dentro de uma tabela. Marcador utilizado para descriminao da codificao de caracteres a ser utilizada no documento HTML. Marcador utilizado para criao de uma forma de entrada de dados. Marcador utilizado para Negritar alguma parte do texto a ser exibido. Marcador utilizado para Itlico. Marcador utilizado para Sublinhar alguma parte do texto a ser exibido. Marcador responsvel pela criao de links de navegabilidade no documento html.
15
[Digite texto]
16
[Digite texto]
17
[Digite texto]
4.1. Conceito/Definio
A Linguagem JavaScript consiste em uma linguagem baseada em scripts e padronizada pela ECMA International (Associao Especializada na Padronizao de Sistemas de Informao), foi criada por Brendan Eich e surgiu em 1995 como linguagem de script cliente-slide de paginas web, trata-se de uma linguagem dinmica, orientada a objeto e criada com a sintaxe similar linguagem C, onde podemos utilizar mtodos e funes dinmicas para alterao e modelagem da pagina, ou seja, uma linguagem capaz de modificar a seu documento HTML em modo de execuo com participao do usurio. Sendo assim, com o uso deste tipo de linguagem se torna possvel a manipulao de elementos HTML, criao de alertas para o usurio, etc.. isso tudo feito a partir de uma requisio que poder ser ou no ser feita pelo usurio. O JavaScript muito bom para a interao com o usurio, uma vez que ele pode responder a aes rapidamente, tornando uma aplicao mais interativa, alm de detectar aes do usurio que o HTML sozinho no poderia, tais como teclas pressionadas Apesar de conter Java no nome, a linguagem JavaScript distinta da linguagem Java e apresenta recursos no disponibilizados em Java ou C++, os scripts desenvolvidos em JavaScript so muito populares e amplamente integrados em pginas web devido facilidade de interao com o Document Object Model (DOM) da pgina. Uma linguagem de script tem a funcionalidade de ser executada no interior de programas ou de outra linguagem de programao. Outras linguagens usadas como script so: ActionScript, PHC, Python, VBScript, entre outras
18
[Digite texto]
19
[Digite texto]
5.1. Conceito/Definio
Diagramas so representaes grficas que auxiliam na anlise e desenvolvimento de um sistema, existem muitos tipos de diagramas, mas durante a programao utilizaremos os diagramas estruturais, dentre esse tipo ser utilizado o Diagrama de Classe, para a criao de um rascunho de como seria modelado o Banco de Dados,
5.2.1. Associao
A associao e a forma mais simples de ligao de Classe, porem necessrio se definir a multiplicidade dessa associao a qual pode variar, esse tipo de ligao possui tambm alguma regras para auxiliar o desenvolvimento do Banco de Dados, as quais esto expressa na tabela abaixo. Multiplicidade 11 *1 1* ** Regra Aplicada O campo de ligao fica na Classe com a multiplicidade 1, ou seja, qualquer uma delas. O campo de ligao fica na Classe com a multiplicidade 1. O campo de ligao fica na Classe com a multiplicidade 1. Ocorre a diviso da ligao, e a criao de uma nova classe para gerenciar esse tipo de ligao, sendo assim, a diviso resultante ser equivalente a duas 1 *.
5.2.2. Generalizao
Mais conhecida como Herana, essa forma de relacionamento pode ser facilmente implementada, pois como o prprio nome diz ela ocorre quando uma classe herda os atributos de uma classe mais genrica, alm disso a Herana ou Generalizao no possui multiplicidade, fazendo assim com que os filhos automaticamente recebam o campo de ligao, pois, por se tratarem de filhos eles receberam as caractersticas da classe pai.
20
[Digite texto]
21
[Digite texto]
22
[Digite texto]
6.1. Conceito/Definio
PHP a sigla de Hipertext Preprocesor, trata-se de uma programao do lado do servidor e independente de plataforma, rpida, com uma grande livraria de funes e muita documentao, foi criado originalmente em 1994 por Rasmus Lerdorf, mas como o PHP esta desenvolvimento em poltica de cdigo aberto, ao longo de sua histria teve muitas contribuies de outros desenvolvedores. Linguagens que trabalham do lado do servidor consistem naquelas que se executam no servidor web, antes da pagina ser enviada atravs da Internet ao cliente, linguagens que executam no servidor podem realizar acessos a base de dados, conexes em rede e outras tarefas para criar a pagina final que ser vista pelo cliente, porm essa pagina enviada ao cliente ter em seu corpo comandos HTML, pois ser o resultante da execuo PHP, sendo assim compatvel com todos os browsers. Abaixo uma Ilustrao de como feita a comunicao PHP com o servidor e a devoluo para o cliente:
PHP se escreve dentro do cdigo HTML, o que o faz realmente fcil de utilizar, assim como ocorre com o popular ASP de Microsoft, porm com algumas vantagens como sua gratuidade, independncia de plataforma, rapidez e segurana. Qualquer pessoa pode baixar atravs da pgina principal de PHP www.php.net e de forma gratuita, um mdulo que faz com que nosso servidor web compreenda os scripts realizados nesta linguagem. independente de plataforma, visto que existe um mdulo de PHP para quase qualquer servidor web. Isto faz com que qualquer sistema possa ser compatvel com a linguagem e significa uma vantagem importante, j que permite levar o site desenvolvido em PHP de um sistema a outro sem praticamente nenhum trabalho. O PHP, no caso de estar montado sobre um servidor Linux ou Unix, mais rpido que ASP, dado que se executa em um nico espao de memria e isto evita as comunicaes entre
23
[Digite texto]
componentes COM que se realizam entre todas as tecnologias implicadas em uma pgina ASP. Algumas das principais caractersticas que vem destacando o PHP no mercado e a grande compatibilidade com as bases de dados mais comuns, e suas funes de envio de correio eletrnico, upload de arquivos, criao de arquivos dinamicamente, dentre outras.
6.2.1. Visibilidade
Como o prprio nome j descreve, visibilidade baseia-se na forma que a classe criada se comportar nos sistemas, no caso possumos trs nveis de visibilidade, lembrando que essas visibilidade podem ser aplicadas tanto a mtodos, quanto a variveis. Formas de Visibilidades Esta forma de visualizao permite que classes de qualquer outra camada de seu projeto tenha acesso a varivel ou funo criada. Esta forma de visualizao permite que somente classes da mesma camada da classe onde esta sendo criada essa varivel ou tenha o acesso. Esta forma de visualizao, amplamente utilizada na metodologia de Encapsulamento, a qual somente permite que a varivel ou funo criada somente seja acessada a partir da mesma classe onde foi criada.
PUBLIC
PROTECTED
PRIVATE
24
[Digite texto]
25
[Digite texto]
6.3.1. Herana
6.3.1.1. Definio/Conceito
A Herana como j explicado, ocorre quando uma classe recebe os atributos de outra classe mais genrica podendo assim acessar os mtodos dessa classe genrica como se fosse mtodos dela prpria. Existem varias formas de implementar de uma herana na codificao da linguagem de programao, como sempre se ouve, ningum tem a mesma lgica, ento adiante veremos a explicao de uma forma de implementao de Herana utilizada atualmente.
26
[Digite texto]
Implementao Descritiva: 1. Cria-se a Modelagem (DTO) das todas as classes neste relacionamento, adicionando a implementao do extends na modelagem do Funcionrio. 2. Acompanhe a Hierarquia de Objeto, onde temos um Objeto Estado dentro do Objeto Cidade, e por sua vez temos um Objeto Cidade dentro do Objeto Pessoa, que por sua vez est fazendo uma Herana com o Objeto Funcionrio, sendo assim possvel dizer que o Objeto Funcionrio possui um objeto Cidade, e esse Objeto Cidade possui um Objeto Estado. 3. Na Camada DAO, cria-se as Interfaces de todas classes neste relacionamento, mas para o foco ficar na Herana trabalharemos com a DAO do Pessoa e Funcionrio. 3.1. Na DAOIMP do Pessoa, cria-se normalmente os mtodos de movimentao de dados, nas pesquisas torna-se necessrio a pesquisa pelo campo cpf_cnpj, o qual como todos os outros retornar o id da pessoa, caso haja cadastrada. 3.2. Na DAOIMP do Funcionrio, cria-se os mtodos de movimentao de dados, porm esse ser um pouco diferente dos demais: 3.2.1. Temos pela frente 4 casos a serem tratados, porm um deles no ser uma vez que a prpria herana o eliminar, os quais so: 3.2.1.1. Existe pessoa, porm no existe Funcionrio, no caso exemplo de um cliente vir a ser um funcionrio, lembrando que no poder se repetir dados em pessoa, para que no haja problemas de normalizao de dados. 3.2.1.2. Existe pessoa, existe Funcionrio, no caso exemplo de um cadastro de Funcionrio vir a ser Alterado.
27
[Digite texto]
No existe pessoa, no existe funcionrio, no caso de uma nova pessoa estar sendo inserida no cadastro. 3.2.1.4. No existe pessoa, existe funcionrio, este caso a prpria modelagem do banco no permite, por no ser possvel a existncia de uma classe filha sem uma classe pai. 3.2.2. Na Implementao do DAOIMP, do Funcionrio primeiramente haver a separao dos dados que sero enviados a tabela pai, atravs de um objeto mais genrico, com esses dados separados, feita a pesquisa na tabela genrica (Pessoa) atravs do cpf_cnpj. 3.2.2.1. Caso haja resultado: Ser feita a pesquisa em Funcionrio, pelo id de Pessoa retornado da pesquisa anterior. 3.2.2.1.1. Caso haja resultado: Ser efetuado duas alteraes, uma na tabela Pessoa, outra na Tabela Funcionrio. 3.2.2.1.2. Caso no haja resultado: Ser efetuado uma alterao na tabela Pessoa, pois ela j existe, e aps ser efetuado uma insero na tabela Funcionrio, com o id restaurado da pesquisa em Pessoa. 3.2.2.2. Caso no haja resultado: Ser efetuado duas inseres, sendo um na Tabela Pessoa e outro na Tabela Funcionrio. 3.2.3. Na Camada CTR, INT e VIEW, haver somente a implementao da classe Funcionario. 3.2.4. Fim.
3.2.1.3.
6.3.2. Polimorfismo
Polimorfismo consiste no principio de que as classe que derivam de uma nica classe base, so capazes de invocar mtodos que, embora apresentem a mesma assinatura (nome), podem se comportar de maneira diferente para cada uma das classes derivadas, utilizado para selecionarmos de forma dinmica as funcionalidades de uma aplicao. Basicamente, atravs do polimorfismo os mesmo atributos e objetos podem ser utilizados em objetos distintos, porm, com implementaes lgicas distintas.
6.3.3. Encapsulamento
uma tcnica muito utilizada na Orientao a Objeto, pois ela capaz de ocultar detalhes internos do funcionamento dos mtodos de uma classe, pois os conhecimentos dos mesmos so desnecessrios para o ponto de vista de um objeto, uma famosa aplicao do Encapsulamento a gerao dos sets e gets, na camada de Modelagem de Banco (DTO).
28
[Digite texto]
Esse tipo de Estrutura amplamente utilizada, pois ela aplica uma condio e dependendo do retorno dela torna-se possvel a criao de dois possveis caminhos, no ambiente de programao ela e conhecida como Se, ou em forma de comando mesmo o If, abaixo alguns exemplos de utilizaes. Exemplo 1: if... else.. <?php $a=2; $b=3; if($a>$b){ echo numero a maior; }else{ echo numero b maior; } ?> Exemplo 2: if... else if... else.. <?php $a=2; $b=3; if($a>$b){ echo numero a maior; }else if($b>$a){ echo numero b maior; }else{ echo so iguais; } ?>
[Digite texto]
6.4.3.1.
Consiste em uma estrutura, onde se constri um lao finito onde ser expresso um inicio e se possui um fim previsto, a estrutura principal desse tipo de lao baseia-se em: for(valor inicial; comparao finita; modificao de valor){ comando a ser executado } Utilizao no cdigo: <?php for($i=0; $i<10; $i++){ echo contador: .$i; } ?>
6.4.3.2.
Consiste em uma estrutura, criada a partir da estrutura for, uma abstrao utilizada para percorrer listas de objetos ou lista de elementos, basicamente o lao ser repetido enquanto haja elemento na lista, e esse elemento ser extrado para uma varivel possibilitando a interao, a estrutura principal desse tipo de lao baseia-se em: foreach(coleoElemento as elemento){ comando a ser executado } Utilizao no cdigo: <?php $nomes = array('Thiago', 'Joo', 'Ricardo', 'Paula'); foreach($nomes as $nome){ echo nome: .$nome; } ?>
30
[Digite texto]
6.4.3.3.
Consiste em uma repetio baseada em uma condio, sendo assim, enquanto essa condio for satisfeita, ou seja, enquanto ser verdadeira a condio o bloco de comando ser repetido, a estrutura principal desse lao basea-se em: while (condio){ Comando a ser executado } Utilizao no cdigo: <?php $n = 1; while($n<=10){ echo numero: .$n; $n++; } ?>
6.4.3.4.
Seu funcionamento e baseado no lao while, porem com uma individualidade, nesse lao no importa se a condio seja verdadeira pelo menos uma fez o comando dentro dele ser executado, pois a verificao da condio e feita aps a primeira execuo do comando, sua estrutura principal baseia-se em:
?>
31
[Digite texto]
7. Projeto Exemplo
32
[Digite texto]
7.1. Descrio
O projeto a seguir consiste em um cadastro de estados, onde encontraremos um cadastro simples com a finalidade e exemplificar a utilizao da ORIENTAO A OBJETO em PHP e conhecer os comandos principais atualmente utilizados, nele manipulamos a modelagem utilizando 5 camadas, que uma das formas de modelagem que possui as caractersticas da Modelagem MVC. Para o desenvolvimento utilizaremos a rotina de desenvolvimento mencionada anterior, sendo assim a sequncia de desenvolvimento ser a seguinte: DAO (conexo), DTO (modelagem da tabela Estado, DAO (implementao de mtodos do banco referente a tabela Estado), CTR (implementao dos controles de funes da tabela Estado), INT (implementao da interface de recepo dos dados da tabela Estado) e VIEW (implementao visual, criao de formulrio para a coleta de dados referente a tabela Estado).
33
[Digite texto]
<?php require_once 'conexaoDAO.php'; class conexaoDAOIMP implements conexaoDAO { public function closeDB($con) { try { @mysql_close($con); } catch (Exception $exc) { echo $exc->getMessage(); } } public function conectaDB() { try { $host = "localhost"; $usuario = "root"; $senha = ""; $database = "projeto_treinamento"; return new mysqli($host, $usuario, $senha, $database); } catch (Exception $exc) { echo $exc->getMessage(); } } } ?>
public function getOp() { return $this->op; } public function setOp($op) { $this->op = $op; }
34
[Digite texto]
public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getNome() { return $this->nome; } public function setNome($nome) { $this->nome = $nome; } public function getSigla() { return $this->sigla; } public function setSigla($sigla) { $this->sigla = $sigla; } public function getStatus() { return $this->status; } public function setStatus($status) { $this->status = $status; } } ?>
35
[Digite texto]
require_once 'estadoDAO.php'; require_once 'conexaoDAOIMP.php'; require_once '../DTO/estadoDTO.php'; class estadoDAOIMP implements estadoDAO { public function modificaEstado(estadoDTO $estadoDTO) { try { $conexao = new conexaoDAOIMP(); $con = $conexao->conectaDB(); $stmt = $con->stmt_init(); $comando = ""; switch ($estadoDTO->getOp()) { case 1: $comando = "insert into estado(nome, sigla, status) values (?, ?, ?)"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('ssi', $nome, $sigla, $status); $nome = $estadoDTO->getNome(); $sigla = $estadoDTO->getSigla(); $status = $estadoDTO->getStatus(); $stmt->execute(); $stmt->close(); break; case 2: $comando = "update estado set nome=?, sigla=?, status=? where id=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('ssii', $nome, $sigla, $status, $id); $nome = $estadoDTO->getNome(); $sigla = $estadoDTO->getSigla(); $status = $estadoDTO->getStatus(); $id = $estadoDTO->getId(); $stmt->execute(); $stmt->close(); break; case 3: $comando = "delete from estado where id=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('i', $id); $id = $estadoDTO->getId(); $stmt->execute(); $stmt->close(); break; } $conexao->closeDB($con); return true; } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisaEstado(estadoDTO $estadoDTO) { try { $conexao = new conexaoDAOIMP(); $dados[] = new estadoDTO(); $con = $conexao->conectaDB(); $stmt = $con->stmt_init(); $comando = ""; switch ($estadoDTO->getOp()) { case 1: $comando = "select * from estado where nome like ?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('s', $nome);
36
[Digite texto]
$nome = '%'.$estadoDTO->getNome().'%'; $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; case 2: $comando = "select * from estado where id=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('i', $id); $id = $estadoDTO->getId(); $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; case 3: $comando = "select * from estado where status=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('i', $status); $status = $estadoDTO->getStatus(); $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; case 4: $comando = "select * from estado where sigla=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('s', $sigla); $sigla = $estadoDTO->getSigla(); $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; } $cont = 0; while ($stmt->fetch()) { $dado = new estadoDTO(); $dado->setId($id); $dado->setNome($nome); $dado->setSigla($sigla); $dado->setStatus($status); $dados[$cont] = $dado; $cont++; } $stmt->close(); $conexao->closeDB($con); return $dados; } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>
37
[Digite texto]
require_once '../DAO/estadoDAOIMP.php'; require_once '../DTO/estadoDTO.php'; class estadoCTR { public function modificaEstado(estadoDTO $estadoDTO) { try { $estadoDAO = new estadoDAOIMP(); return $estadoDAO->modificaEstado($estadoDTO); } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisarEstado(estadoDTO $estadoDTO){ try { $estadoDAO = new estadoDAOIMP(); return $estadoDAO->pesquisaEstado($estadoDTO); } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>
38
[Digite texto]
if ($estadoCTR->modificaEstado($estadoDTO)) { echo("<script>alert('Alterado com sucesso!'); window.location = '../VIEW/listarEstadoVIEW.php'; </script>"); } else { echo("<script>alert('Erro ao Alterar!'); window.location ='../VIEW/listarEstadoVIEW.php'; </script>"); } } if(isset($_GET['excluir'])){ $estadoDTO->setOp(3); $estadoDTO->setId($_GET['excluir']); if ($estadoCTR->modificaEstado($estadoDTO)) { echo("<script>alert('Excludo com Sucesso!'); window.location = '../VIEW/listarEstadoVIEW.php'; </script>"); } else { echo("<script>alert('Erro ao Excluir!'); window.location ='../VIEW/listarEstadoVIEW.php';</script>"); } } ?>
39
[Digite texto]
<body> <form id="cadEstado" name="cadEstado" action="../INT/estadoINT.php" method="POST"> <fieldset> <?php if ($lista[0]->getId() == "") { echo "<h2>Cadastrar</h2>"; } else { echo "<h2>Alterar</h2>"; } ?> <p>Nome:<br/><input type="text" name="nome" value="<?php echo $lista[0]->getNome(); ?>" id="nome" /></p> <p>Sigla:<br/><input type="text" name="sigla" id="sigla" value=" <?php echo $lista[0]->getSigla(); ?>"/></p> <p>Status: <br/> <select name="status" id="status"> <option value="0" <?php if ($lista[0]->getStatus() == 0) { echo 'selected="selected"'; } ?>>Ativo</option> <option value="1" <?php if ($lista[0]->getStatus() == 1) { echo 'selected="selected"'; } ?> >Inativo</option> </select> <?php if ($lista[0]->getId() == "") { echo'<p><input type="submit" name="cadastrar" id="cadastrar" value="Cadastar" /></p>'; } else { echo '<p><input type="submit" name="alterar" id="alterar" value="Alterar"/></p>'; echo'<input type="hidden" name="id" value=' . $lista[0]->getId() . '" id="id"/>'; } ?> </p> </fieldset> </form> </body> </html>
40
[Digite texto]
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Lista Estado</title> </head> <body> <center> <a href="estadoVIEW.php" >Cadastrar</a> <table id="listaEstado" name="listaEstado" border="1"> <tr> <th>ID:</th> <th>Nome:</th> <th>Sigla:</th> <th>Status:</th> <th colspan="2">Editar:</th> </tr> <?php for ($i = 0; $i < sizeof($dados); $i++) { if ($dados[$i]->getId() != "") { if ($dados[$i]->getStatus() == 0) { $status = "ATIVO"; } else if ($dados[$i]->getStatus() == 1) { $status = "INATIVO"; } else { $status = "INDEFINIDO"; } echo '<tr> <td>' . $dados[$i]->getId() . '</td> <td>' . $dados[$i]->getNome() . '</td> <td>' . $dados[$i]->getSigla() . '</td> <td>' . $status . '</td> <td><a href="estadoVIEW.php?a=' '">Alterar</a></td> <td><a href="../INT/estadoINT.php?excluir=. $dados[$i]->getId() . " >Excluir</a></td> </tr>'; } } ?> </table> <br/> <br/> </center> </body> </html>
$dados[$i]->getId()
41
[Digite texto]
public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getLogin() { return $this->login; } public function setLogin($login) { $this->login = $login; } public function getSenha() { return $this->senha; } public function setSenha($senha) { $this->senha = $senha; } public function getTipo() { return $this->tipo; } public function setTipo($tipo) { $this->tipo = $tipo; } public function getStatus() { return $this->status; } public function setStatus($status) { $this->status = $status; }
42
[Digite texto]
public function getOp() { return $this->op; } public function setOp($op) { $this->op = $op; } } ?>
Criao da Classe do PHP, para o desenvolvimento dos mtodos de acesso tabela Usuario, sendo essa Classe baseada na interface a usuarioDAO e denominada como usuarioDAOIMP.
<?php require_once '../DTO/usuarioDTO.php'; require_once 'conexaoIMP.php'; require_once 'usuarioDAO.php'; class usuarioDAOIMP implements usuarioDAO { public function modificarUsuario(usuarioDTO $usuarioDTO) { try { $conexao = new conexaoIMP(); $con = $conexao->conectaDB(); $comando = ""; $stmt = $con->stmt_init(); switch ($usuarioDTO->getOp()) { case 1: //gravar $comando = "INSERT INTO usuarios(login, senha, tipo, status) VALUES (?, ?, ?, ?);"; $stmt->prepare($comando) or die("ERRO DO INSERT DAO "); $stmt->bind_param('ssii', $login, $senha, $tipo, $status); $login = $usuarioDTO->getLogin(); $senha = $usuarioDTO->getSenha(); $tipo = $usuarioDTO->getTipo(); $status = $usuarioDTO->getStatus(); $stmt->execute(); $stmt->close(); break; case 2 : //alterar $comando = "UPDATE usuarios SET login=?, senha=?, tipo=?, status=? WHERE id=?;";
43
[Digite texto]
$stmt->prepare($comando) or die("ERRO DO UPDATE DAO "); $stmt->bind_param('ssiii', $login, $senha, $tipo, $status, $id); $login = $usuarioDTO->getLogin(); $senha = $usuarioDTO->getSenha(); $tipo = $usuarioDTO->getTipo(); $status = $usuarioDTO->getStatus(); $id = $usuarioDTO->getId(); $stmt->execute(); $stmt->close(); break; case 3 : //excluir $comando = "DELETE FROM usuarios WHERE id=?"; $stmt->prepare($comando) or die("ERRO DO UPDATE DAO "); $stmt->bind_param('i', $id); $id = $usuarioDTO->getId(); $stmt->execute(); $stmt->close(); break; } $conexao->closeDB($con); return true; } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisarUsuario(usuarioDTO $usuarioDTO) { try { $conexao = new conexaoIMP(); $dados[] = new usuarioDTO(); $con = $conexao->conectaDB(); $stmt = $con->stmt_init(); $comando = ""; switch ($usuarioDTO->getOp()) { case 1: //todos $comando = "SELECT * FROM usuarios;"; $stmt->prepare($comando) or die("ERRO SELECT"); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; case 2: //todos ativos $comando = "SELECT * FROM usuarios WHERE status=0"; $stmt->prepare($comando) or die("erro select"); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; case 3: //id $comando = "SELECT * FROM usuarios WHERE id=?"; $stmt->prepare($comando) or die("erro select"); $stmt->bind_param('i', $id); $id = $usuarioDTO->getId(); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; case 4: //login $comando = "SELECT * FROM usuarios WHERE login=?;"; $stmt->prepare($comando) or die("erro select"); $stmt->bind_param('s', $login); $login=$usuarioDTO->getLogin(); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; }
44
[Digite texto]
$cont = 0; while ($stmt->fetch()) { $dado = new usuarioDTO(); $dado->setId($id); $dado->setLogin($login); $dado->setSenha($senha); $dado->setTipo($tipo); $dado->setStatus($status); $dados[$cont] = $dado; $cont++; } $conexao->closeDB($con); return $dados; } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>
45
[Digite texto]
Na implementao da camada INT, j teremos um novo assunto sendo que nessa camada j iniciaremos o trabalho com Sesses, pois em um caso de login essa camada ser responsvel por localizar os dados e envia-los para a Sesso, alm de no caso de um usurio sair do sistema, ou efetuar o logoff, essa camada ser responsvel por limpar as sesses. Sesses tem muitas utilidades, podendo at mesmo controlar o tempo de inatividade, por isso um assunto muito bom a ser explorado nas linguagens web, no entanto aqui, iremos implementas algumas formas simples de envio de dados sesso e o restauro de dados da mesma. Abaixo teremos um arquivo do PHP, o qual ser responsvel pela Interface da tabela usurio:
<?php session_start(); require_once '../DTO/usuarioDTO.php'; require_once '../CTR/usuarioCTR.php'; $usuarioCTR = new usuarioCTR(); $usuarioDTO = new usuarioDTO(); $usuarioDTO->setLogin($_POST['login']); $usuarioDTO->setSenha(md5($_POST['senha'])); $usuarioDTO->setTipo($_POST['tipo']); $usuarioDTO->setStatus($_POST['status']); if (isset($_POST['cadastrar'])) { $usuarioDTO->setOp(1); if ($usuarioCTR->modificarUsuario($usuarioDTO)) { echo "<script>alert('Usuario enviado com sucesso!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } else { echo "<script>alert('Erro ao enviar Usuario!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } } if (isset($_POST['alterar'])) { $usuarioDTO->setId($_POST['id']); $usuarioDTO->setOp(2); if ($usuarioCTR->modificarUsuario($usuarioDTO)) { echo "<script>alert('Usuario enviado com sucesso!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } else { echo "<script>alert('Erro ao enviar Usuario!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } } if (isset($_GET['e'])) { $usuarioDTO->setId($_GET['e']); $usuarioDTO->setOp(3); if ($usuarioCTR->modificarUsuario($usuarioDTO)) { echo "<script>alert('Usuario Excluido com sucesso!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } else { echo "<script>alert('Erro ao Excluir Usuario!'); window.location = '../VIEW/listaUsuarioVIEW.php'; </script>"; } } if (isset($_POST['Logar'])) { $usuarioDTO->setOp(4);
46
[Digite texto]
$dados[] = new usuarioDTO(); $dados = $usuarioCTR->pesquisarUsuario($usuarioDTO); $rs = false; for ($i = 0; $i < sizeof($dados); $i++) { if ($dados[$i]->getSenha() == $usuarioDTO->getSenha()) { $_SESSION['id'] = $dados[$i]->getId(); $_SESSION['login'] = $dados[$i]->getLogin(); $_SESSION['tipo'] = $dados[$i]->getTipo(); $rs = true; break; } } if ($rs) { echo "<script>window.location = '../VIEW/principal.php'; </script>"; } else { echo "<script>window.location = '../admin/index.php?n=1'; </script>"; } } if (isset($_GET['s'])) { $_SESSION['id'] = ""; $_SESSION['login'] = ""; $_SESSION['tipo'] = ""; session_unset(); session_destroy(); echo("<script>window.location = '../admin/index.php?n=2'; </script>"); } ?>
47
[Digite texto]
?> </h3> <form id="cadLogin" name="cadLogin" action="../INT/usuarioINT.php" method="POST"> <fieldset> <p>Login: <input type="text" name="login" id="login" value=""/></p> <p>Senha: <input type="password" name="senha" id="senha" value=""/></p> <p><input type="submit" name="Logar" id="Logar" value="Logar" /></p> </fieldset> </form> </center> </body> </html>
Implementao principal.php
<?php session_start(); if ($_SESSION['id'] != "") { ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Pgina Administradora</title> </head> <body> <a href="listaBigclub_dicasVIEW.php">Big Club</a><br/> <a href="listaCidadeVIEW.php">Cidades</a><br/> <a href="listaContato.php">Contatos</a><br/> <a href="listaCursosVIEW.php">Cursos</a><br/> <a href="empresaVIEW.php">Dados Empresa</a><br/> <a href="listaMateriaVIEW.php">Materias</a><br/> <a href="listaPainel.php">Painel</a><br/> <a href="listaPainelItem.php">Painel Item</a><br/> <a href="listaUsuarioVIEW.php">Usuarios</a><br/> <a href="listaUnidadesVIEW.php">Unidades</a><br/> <a href="../INT/usuarioINT.php?s=ok">Logout...</a> <?php if ($_SESSION['tipo'] == 0) { $nivel = 'ADMINISTRADOR'; } else if ($_SESSION['tipo'] == 1) { $nivel = 'FUNCIONRIO'; } else { $nivel = 'INDEFINIDO'; } echo 'Bem Vindo: ' . $_SESSION['login'] . ' - Cdigo Verificao: ' . $_SESSION['id'] . ' - Nivel: ' . $nivel ?> </body> </html> <?php } ?>
48