Buscar

Apostila PHP 2014

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Desde 2001, inovando e renovando! 
Sumário
1.	Instalação e Configuração	3
1.1.	Instalação e Configuração PHP	4
1.1.1.	Conceito e Download	4
1.1.2.	Instalação e Configuração	4
1.1.3.	Apresentação Pasta Instalação PHP	5
1.2.	Instalação e Configuração Apache	5
1.2.1.	Conceito e Download	5
1.2.2.	Instalação e Configuração	5
1.2.3.	Configuração do Serviço no Windows	6
1.2.4.	Apresentação pasta Instalação Apache	7
1.3.	Instalação e Configuração Banco de Dados	7
1.3.1.	Discussão	7
1.3.2.	Banco de Dados MySQL	7
1.3.2.1.	Download	7
1.3.2.2.	Instalação e Configuração	8
1.3.2.3.	Instalação e Configuração Interface Web (phpMyAdmin)	8
1.3.2.4.	Apresentação MySQL Programa Local e Web	8
1.3.3.	Banco de Dados PostgreSQL	9
1.3.3.1.	Download	9
1.3.3.2.	Instalação e Configuração	9
1.3.3.3.	Instalação e Configuração Interface Web (phpPgAdmin)	9
1.3.3.4.	Apresentação PostgreSQL Programa Local e Web	10
2.	Linguagem de Banco de Dados (SQL)	12
2.1.	Conceito/Definição	13
2.2.	Banco de Dados Relacionais	13
2.3.	Operadores	13
2.3.1.	Operadores Lógicos	13
2.3.2.	Operadores Relacionais	13
2.3.3.	Operadores Aritméticos	14
2.4.	Tipologia de Comandos SQL	14
2.4.1.	Comandos DDL	14
2.4.2.	Comandos DML	15
2.4.3.	Comandos DQL	16
2.4.4.	Comandos DCL	16
3.	Lógica de Programação	18
3.1.	Conceito/Definição	19
3.2.	Algoritmos	19
3.2.2.	Desenvolvendo um Algoritmo	19
3.2.2.1.	Regras de Construção	19
3.2.2.2.	Análise	20
3.2.2.3.	Desenvolvimento da Lógica (Portugol)	20
3.2.2.4.	Representação Gráfica	21
3.3.	Estrutura de Dados	21
4.	Linguagem de Marcação (HTML)	22
4.1.	Conceito/Definição	23
4.2.	Comandos Introdutórios	23
4.3.	Criando um Formulário	24
5.	Linguagem de Manipulação Dinâmica (JavaScript)	26
5.1.	Conceito/Definição	27
5.2.	Comandos Introdutórios	27
6.	Modelagem Banco Dados (Diagramas)	28
6.1.	Conceito/Definição	29
6.2.	Conceitos Principais Utilizados	29
6.2.1.	Associação	29
6.2.2.	Generalização	29
6.3.	Modelando Diagrama da Fase de Projeto	30
7.	Linguagem PHP – Orientada à Objeto	31
7.1.	Conceito/Definição	32
7.2.	Interfaces, Classe e Objeto	33
7.2.1.	Visibilidade	33
7.2.2.	Variáveis e Constantes	34
7.2.2.1.	Tipos de Variáveis	34
7.2.2.2.	Apontador “This”	34
7.2.3.	Camadas de Desenvolvimento (PHP)	34
7.2.4.	Rotina de Programação	35
7.3.	Herança, Polimorfismo e Encapsulamento	35
7.3.1.	Herança	35
7.3.1.1.	Definição/Conceito	35
7.3.1.2.	Metodologia de Implementação	35
7.3.2.	Polimorfismo	37
7.3.3.	Encapsulamento	37
7.4.	Estruturas de Controles	38
7.4.1.	Estruturas de Condições	38
7.4.2.	Estruturas de Caso	38
7.4.3.	Estruturas de Repetições	39
7.4.3.1.	Laço de Repetição Para (For)	39
7.4.3.2.	Laço de Repetição Para Cada (Foreach)	39
7.4.3.3.	Laço de Repetição Enquanto (While)	40
7.4.3.4.	Laço de Repetição Faça Enquanto (Do .. While)	40
8.	Projeto Exemplo	42
8.1.	Descrição	43
8.2.	Classe/Tabela Banco de Dados	43
8.3.	Implementação Camada DAO (Conexão)	43
8.4.	Implementação Camada DTO (Modelagem)	44
8.5.	Implementação Camada DAO (Métodos Manipulação Dados)	45
8.6.	Implementação Camada CTR (Métodos de Controle Dados)	47
8.7.	Implementação Camada INT (Interface de Dados)	48
8.8.	Implementação Camada VIEW (Visual)	49
8.9.	Sessões e Controle de Login	51
8.10.	Camada DTO	52
8.11.	Camada DAO	53
8.12.	Camada CTR	55
8.13.	Camada INT	55
8.14.	Camada VIEW	57
9.	FileZilla	59
9.1.	Conceito	60
9.2.	Instalação e Utilização	60
9.3.	Programa FileZilla	60
Instalação e Configuração
Instalação e Configuração PHP
Conceito e Download
Como será utilizado a plataforma PHP no projeto, será necessário que ele esteja instalado e devidamente configurado, para isso deverá ser verificado no site uma versão do PHP que seja compatível com a versão do Servidor Apache que será instalado em seguida. Para isso é necessário consultar as documentações de ambos, que normalmente são disponibilizadas na Web.
Referente ao PHP, atualmente temos o endereço: http://php.net/, que disponibiliza a documentação, informações de atualizações e alguns downloads para o Sistema Operacional Linux.
Utilizaremos o Sistema Operacional Windows, então para o download, visite o link no endereço: http://windows.php.net/, e selecione a opção download, no momento a versão que será utilizada é a 5.6.0, para tanto deve ser baixado o arquivo php-5.6.0-Win32-VC11-x64 para Windows baseado na arquitetura de 64 bits ou o arquivo php-5.6.0-Win32-VC11-x86 para Windows baseado na arquitetura de 32 bits, observe a marcação VC11, pois deverá aparece no servidor apache também.
Instalação e Configuração
Para a instalação, siga corretamente todos os passos abaixo:
Extraia o arquivo ZIP, que foi baixado anteriormente para uma pasta dentro do C:, preferível que o caminho fique: C:/PHP5.
No diretório extraído, localize o arquivo php.ini-development, faça uma cópia e cole-a na mesma pasta, feito isso renomeie a cópia para php.ini.
Abra o arquivo php.ini e faça as seguintes configurações:
3.1- Na linha escrita: error_reporting = E_ALL 
 Altere para: error_reporting=E_ALL & ~E_NOTICE.
3.2- Na linha escrita: ; extension_dir = "ext"
 Altere para: extension_dir = "c:/php5/ext" (retire o ponto e vírgula).
3.3- Na linha escrita: ;date.timezone = 
 Altere para: date.timezone = "America/Sao_Paulo" (retire o ponto virgula).
Retire o ponto e vírgula das seguintes linhas:
extension=php_gd2.dll (para tratamento figuras).
extension=php_mbstring.dll (requerido pelo visualizador web do banco).
Caso pretenda utilizar o Banco de dados Mysql
extension=php_mysql.dll (driver banco dados mysql)
extension=php_mysqli.dll (outro driver banco dados mysql)
extension=php_pdo_mysql.dll (driver PDO mysql)
Caso pretenda utilizar o Banco de dados PostgreSQL
extension=php_pgsql.dll (driver banco dados postgresql)
extension=php_pdo_pgsql.dll (driver PDO postgresql)
Apresentação Pasta Instalação PHP
Abaixo está uma imagem para ilustrar como ficaria a pasta de instalação do PHP no Windows:
Instalação e Configuração Apache
Conceito e Download
O Servidor Apache será o responsável por interpretar as pagina que serão desenvolvidas, sendo assim muito necessário para a visualização do resultado antes da publicação do projeto.
Atualmente, para informações sobre o este servidor visite a link no endereço: http://www.apache.org/, para efetuar o download para o Sistema operacional Windows visite o link no endereço: http://httpd.apache.org/docs/current/platform/ windows.html, fazendo a leitura da página será possível encontrar: Downloading Apache for Windows, logo abaixo será listada os provedores de download, utilizando o primeiro (ApacheHaus), será apresentada a lista de arquivos do apache disponíveis, aqui utilizaremos a versão 2.4.10, sendo assim deverá ser feito do download do arquivo: httpd-2.4.10-x64-vc11 para Sistemas Operacionais baseados na arquitetura de 64 bits, ou do arquivo: httpd-2.4.10-x86-vc11, para Sistemas Operacionais baseados na arquitetura de 32 bits, relembrando que a marcação VC11, que apareceu na versão do PHP está presente.
Instalação e Configuração
Para a instalação, siga corretamente todos os passos abaixo:
Extraia o arquivo ZIP, que foi baixado anteriormente para uma pasta dentro do C:, preferível que o caminho fique: C:/Apache2_4.
No diretório onde foi extraído, localize a pasta htdocs, e dê permissão total para todos os usuários, isso deverá ser feito para usuários que tenham Sistemas superiores ao Windows XP, consulte como fazer essa ação em sites especializados.
Localize a pasta conf, abra-a, nela estará o arquivo de configuração httpd.conf, o qual deverá ser alterado, para isso é recomendado o uso do programa Notepad++, abra-o para edição, navegue até o fim do documento, e adicione as seguintes linha:
LoadModule php5_module "C:/PHP5/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP5"
Ainda com o arquivo http.conf em edição,
Localize as linhas: 
<IfModule dir_module>
 DirectoryIndexindex.html
</IfModule>
Altere-as para:
<IfModule dir_module>
 DirectoryIndex index.html index.htm index.php
</IfModule>
Configuração do Serviço no Windows
A configuração do Serviço Apache no Windows é recomendada, pois facilita para o desenvolvedor, sendo que como serviço o Apache será iniciado automaticamente ao iniciar o Windows e caso queira poderá utilizar o monitor de recursos do Apache para verificar se está tudo em ordem com o serviço, abaixo segue a configuração:
Abra o Prompt de Comando (cmd) no modo Administrador.
Já no Prompt, digite o comando para acessar bin de onde se encontra o Apache instalado, ex: cd c:\Apache2_4\bin.
Dentro da pasta bin, digite o seguinte comando para criar o serviço do Windows: httpd -k install.
Feito isso, digite: httpd -k start, para que o serviço seja iniciado, feito isso o processo de configuração estará finalizado.
Para ter acesso ao monitor de recursos do apache, navegando pelo Windows na pasta bin dentro do apache, será localizado o arquivo: ApacheMonitor, execute-o e será exibido o monitor de recursos do apache, caso queira mais comodidade crie um atalho dele na pasta de inicialização do Windows, sendo assim ele será inicializado do lado do relógio assim que o Sistema inicializar.
Outros Comandos no Prompt que podem ser utilizado referente ao apache, todos devem ser executados quando a pasta bin estiver aberta no Prompt.
	Parar Apache
	httpd -k stop
	Reiniciar Apache
	httpd -k restart
	Desintalar Serviço Apache
	httpd -k uninstall
	Lista de opções do Comando
	httpd -h
Apresentação pasta Instalação Apache
Abaixo está uma imagem para ilustrar como ficaria a pasta de instalação do PHP no Windows:
Instalação e Configuração Banco de Dados
Discussão
Atualmente os Bancos de Dados mais utilização para alocação Web, está sendo o MySQL, seguido por perto pelo PostgreSQL, sendo assim a configuração foi feita utilizando esses dois Bancos de Dados como exemplo, para utiliza-los é necessário verificar o suporte do Domínio que será contratado, caso deseje utilizar um outro banco deverá ser pesquisado a forma de Conexão PDO PHP do banco desejado.
Banco de Dados MySQL
Download
Atualmente, a empresa proprietária do Banco de Dados MySQL, é a Oracle, que tem o belo acervo de propriedades relacionado a software, visite o link no endereço: http://www.oracle.com/br/index.html, e verifique, para o download visite o link no endereço: http://dev.mysql.com/downloads/mysql/, que também pode ser acessado pelo endereço da Oracle, selecione o tipo de Sistema Operacional desejado e efetue o download, dependendo talvez sejam necessários alguns programas complementares para que possa ser efetuada a instalação.
Instalação e Configuração
A instalação é totalmente automatizada, somente será necessário informar a senha a ser configurada para o acesso do usuário principal do Banco de Dados.
Instalação e Configuração Interface Web (phpMyAdmin)
O phpMyAdmin trata-se de um site desenvolvido para prover o acesso aos dados de servidores de Banco de Dados MySQL, é amplamente utilizado por servidores online, por esse motivo é necessário o conhecimento de suas funcionalidades.
Atualmente, para efetuar o download basta visitar o link no endereço: http://www.phpmyadmin.net/, escolher a opção de Download, já nessa opção serão exibidas as versões disponíveis, selecione a desejada e efetue o download, recomenda-se as opções com all-laguages e o arquivo ZIP (para Windows) pelo seu suporte a várias linguagens.
Para Instalação basta descompactar o arquivo que resultará em uma pasta com vários arquivos, inclusive alguns em PHP, para mais comodidade renomeie a pasta resultante para phpmyadmin somente e coloque-a na pasta htdocs do seu servidor, sendo assim finalizado a Instalação e configuração. 
Apresentação MySQL Programa Local e Web
Abaixo está algumas imagens para ilustrar como seria o programa instalado juntamente com o MySQL para a visualização do Banco de Dados Local e também a interface Web phpMyAdmin, muito utilizada atualmente.
Programa Local:
Programa WEB
Banco de Dados PostgreSQL
Download
Atualmente, a empresa proprietária do Banco de Dados PostgreSQL, é a própria PostgreSQL, para o download do sistema de gerenciamento de Banco de Dados visite o link no endereço: http://www.postgresql.org/download/, selecione o tipo de Sistema Operacional desejado e efetue o download, dependendo talvez sejam necessários alguns programas complementares para que possa ser efetuada a instalação.
Instalação e Configuração
A instalação muito bem automatizada, somente será necessário informar a senha a ser configurada para o acesso do usuário principal do Banco de Dados.
Instalação e Configuração Interface Web (phpPgAdmin)
O phpPgAdmin trata-se de um site desenvolvido para prover o acesso aos dados de servidores de Banco de Dados PostgreSQL, é amplamente utilizado por servidores online, por esse motivo é necessário o conhecimento de suas funcionalidades.
Atualmente, para efetuar o download basta visitar o link no endereço: http://phppgadmin.sourceforge.net/, escolher a opção de Download, já nessa opção serão exibidas as versões disponíveis, selecione a desejada e efetue o download, recomenda-se as opções ZIP (para Windows).
Para Instalação basta descompactar o arquivo que resultará em uma pasta com vários arquivos, inclusive alguns em PHP, para mais comodidade renomeie a pasta resultante para phppgadmin, coloque-a na pasta htdocs do seu servidor, acesse a pasta onde está instalalado o PHP (C:/PHP5), copie o arquivo libpq e cole na pasta bin do seu servidor Apache (C:/Apache2_4/bin), por último acesse a pasta conf que se encontra dentro da pasta do phppgadmin que foi movida para sua htdocs, abra o arquivo config.inc em modo de edição, de preferência com o notepad++, localize a linha: $conf['extra_login_security'] = true; altere-a para $conf['extra_login_security'] = false;, após as configuração utilize o apache monitor e reinicie o servidor Apache, lembre-se de ativar as extensões referentes ao PostgreSQL no php.ini, caso não tenha feito isso, sendo assim finalizado a Instalação e configuração. 
Apresentação PostgreSQL Programa Local e Web
Abaixo está algumas imagens para ilustrar como seria o programa instalado juntamente com o PostgreSQL para a visualização do Banco de Dados Local e também a interface Web phpPgAdmin, muito utilizada atualmente.
Programa Local
Programa WEB
Linguagem de Banco de Dados (SQL)
 
	
Conceito/Definição
A SQL consiste na sigla de abreviação para Structured Query Language, ou traduzida para o português “Linguagem de Consulta Estruturada”, essa linguagem baseia-se em uma forma de pesquisa declarativa para bancos de dados relacionais.
Possui vários grupos de comando, aqui destacaremos os principais e mais utilizados sendo eles os grupos DDL, DML, DQL e o DCL.
Banco de Dados Relacionais
Esse tipo de Banco de Dados organiza seus dados através de relações, onde, cada relação consiste em uma tabela, e cada coluna consiste em atributos e cada linha consiste em tuplas ou elementos da relação. 
Um conceito importante é o de chave, pois, através dele se torna possível a identificação e diferenciação de uma tupla, além de acelerar o acesso aos elementos sendo possível a utilização de índices.
Na visão de organização de dados, esse método de organização através de tabelas fornece um conceito simples e familiar para a estruturação dos dados, dentre esses e outros motivos que o conceito de Banco de Dados Relacionais tem tido muito sucesso. 
Operadores
Baseia-se em algumas formas de comparações e interações feitas com dados provindos do Banco de Dados, são três tipos de operadores mais utilizados, sendo eles, Lógico, Relacionais e Aritméticos.
Operadores Lógicos
Os operadores lógicos são utilizados para definição de condições para a produção de um resultado único, sendo que uma linha só poderá ser retornada casoo resultado do global da condição for verdadeiro.
	Operadores:
	Descrição:
	AND
	Retornará caso ambas condições sejam verdadeiras.
	OR
	Retornará caso uma das condições seja verdadeira.
	NOT
	Retornará caso a condição negada seja verdadeira.
Operadores Relacionais
Operadores Relacionais são usados para descrever uma condição que faz comparação de uma expressão a outra expressão. Abaixo a tabela de Operadores Relacionais:
	Operadores:
	Descrição:
	=
	Igual a
	>
	Maior que
	>=
	Maior ou igual a que
	<=
	Menor ou igual 
	<> 
	Diferente de
Operadores Aritméticos
São os operadores aritméticos comumente utilizados, os quais podem ser utilizados pelo SQL, porém somente poderão ser utilizados em colunas do tipo numérico.
	Operadores:
	Descrição:
	+
	Soma
	-
	Subtração
	*
	Multiplicação
	/
	Divisão
Tipologia de Comandos SQL
Os comandos de manipulações de dados SQL foram divididos em Tipologias Textuais, facilitando a forma de utilização e estudo, as quais seguem abaixo:
Comandos DDL
A abreviação DDL foi criada a partir da denominação de um grupo de comandos da linguagem SQL, a qual consiste em “Data Definition Language”, ou traduzido “Linguagem de Definição de Dados”.
Esse grupo de comandos é baseado principalmente em ações que permitem ao usuário definir novas tabelas e elementos. A maioria dos visualizadores de Banco de Dados tenta facilitar muito a vida do desenvolvedor em relação a esses comandos, pois cada dia mais esses visualizadores estão fazendo de uma forma mais dinâmica o que antigamente era estaticamente comandos.
	Comando Create (Criação de Tabelas):
Comando responsável pela criação de tabelas dentro do banco de dados.
Sintaxe (MYSQL):
CREATE TABLE nometabela(
 campotabela INT NOT NULL AUTO_INCREMENT,
 campotabela2 VARCHAR(45) NOT NULL,
 campotabela3 VARCHAR(45) NOT NULL,
 campotablea4 VARCHAR(45) NOT NULL,
 PRIMARY KEY (`campotabela`)
)
ENGINE = InnoDB;
	Comando Alter (Alteração de Tabelas):
Comando responsável pela alteração de componentes de uma tabela dentro do banco de dados.
Sintaxe (MYSQL):
ALTER TABLE nometabela ADD colunanova int;
	Comando Drop (Exclusão de Tabelas):
Comando responsável pela exclusão de tabelas dentro do bando de dados.
Sintaxe:
DROP TABLE `nometabela`;
Dentre os comandos acima, existe outros que fazem parte do grupo DDL, porém não são muito utilizados os quais são: o Create Index, responsável pela criação de índices dentro de um banco de dados, o Create View, responsável pela criação de visões dentro de um banco de dados, o Alter Table, responsável pela alteração de características de uma tabela de um banco de dados, o Alter Index, responsável pela alteração do index criado em uma tabela do banco de dados, o Drop Index, responsável pela exclusão de index criado em uma tabela, o Drop View, responsável pela exclusão da visão criada em um banco de dados.
Comandos DML
A abreviação DML foi criada a partir da denominação de um grupo de comandos da linguagem SQL, a qual consiste em “Data Manipulation Language”, ou traduzido “Linguagem de Manipulação de Dados”.
Esse grupo de comandos é baseado principalmente em ações de manipulação de registros de uma tabela, esse grupo é formado por:
	Comando Insert (Inserção): 
Comando responsável pela inserção de dados em uma tabela.
Sintaxe:
INSERT INTO nometabela(campo1, campo2, campo3) VALUES (‘valor1’, ‘valor2’, valor3’);
Regras:
- valores numéricos não utilizam as aspas simples, em valores de texto e data é obrigatório a utilização das aspas simples.
- valores de data além de utilizar as aspas, devem ser inseridas na forma inglesa curta. Ex: 2012-05-31.
- valores numéricos com decimais devem ser inseridos sem separação de milhares e com uma virgula na separação decimal (método inglês). Ex: 1878.90.
	Comando Delete (Remoção)
Comando responsável pela remoção de dados de uma tabela.
Sintaxe:
DELETE FROM nometabela WHERE comparacao=1;
Regras:
- quanto aos dados utilizam-se as mesmas normas do insert.
Recomendações:
- esse comando por ser um comando de remoção de dados, se torna necessário um maior cuidado, pois, remover dados de um banco é uma ação de alto risco para os dados, recomenda-se um backup sempre quando for ser utilizado.
- utilização mais comum desse comando sempre é acompanhado da instrução WHERE.
	Comando Update (Atualização):
Comando responsável pela atualização de dados de uma tabela.
Sintaxe:
UPDATE nometabela SET nomecampo=’valorcamponovo’, nomecampo2=’valor camponovo2’ WHERE comparação=1;
Regras:
- quanto aos dados utilizam-se as mesmas normas do insert.
Recomendações:
- esse comando por ser um comando de remoção de dados, se torna necessário um maior cuidado, pois, remover dados de um banco é uma ação de alto risco para os dados, recomenda-se um backup sempre quando for ser utilizado.
- utilização mais comum desse comando sempre é acompanhada da instrução WHERE.
Comandos DQL
A abreviação DQL foi criada a partir da denominação de um grupo de comandos da linguagem SQL, a qual consiste em “Data Query Language”, ou traduzido “Linguagem de Consulta de Dados”.
Esse grupo de comandos é baseado principalmente em ações que permitem ao usuário definir criar consultas de tabelas no banco de dados, esse grupo consiste em um único comando o SELECT, esse comando em algumas bibliografias também é constatado como integrante do grupo DML, pelo fato de ser um manipulado de dados também, sendo assim levando em consideração essas bibliografias pode se presumir que o SELECT seja um comando DQL e DML.
	Comando Select (Consulta de Dados):
Comando responsável pela consulta de dados de uma ou varias tabelas no banco de dados.
Sintaxe:
SELECT coluna, coluna1, coluna2 FROM nometabela <CLAUSULAS>.
Principais Cláusulas:
As cláusulas complementam o SELECT adicionando condições e outros recursos a sua consulta, as cláusulas disponíveis são:
WHERE: responsável por determinar a condição que será aplicada na consulta, está expressão poderá conter operadores lógicos, aritméticos e relacionais.
ORDER BY: responsável por ordenar os dados retornados na consulta criada através do SELECT, onde pode se definir uma ou mais coluna como referência de ordem. 
GROUP BY: responsável por agrupar os dados contidos na consulta
Comandos DCL
A abreviação DCL foi criada a partir da denominação de um grupo de comandos da linguagem SQL, a qual consiste em “Data Control Language”, ou traduzido “Linguagem de Controle de Dados”. Esse grupo é responsável pelo controle de aspectos de autorização de manipulação do banco e licenças de usuários para controlar o acesso aos dados.
	Comando Grant (Garantir Privilégios):
Comando responsável por definir os privilégios de um usuário criado no Banco de dados.
Sintaxe:
GRANT ALL ON *.* TO user@localhost IDENTIFIED BY 'senha’;
Recomendação:
- Utilizar somente quando houver criação de usuários novos ou alterações de privilégios.
	Comando Revoke (Revogar Privilégios)
Comando responsável por revogar ou barrar privilégios de um usuário no Banco de dados.
Sintaxe:
REVOKE <comando> ON <tabela> TO <usuário>;
Recomendação:
- Utilizar somente quando houver a necessidade de retirar privilégios de algum usuário ou restringir permissão de acesso aos dados armazenados.
Lógica de Programação
Conceito/Definição
Lógica de Programação baseia-se em uma forma de escrever um programa de computador utilizando uma linguagem de fácil entendimento para nós seres humanos, esse tipo de lógica é necessário para todas as pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois permite definir uma sequência lógica para um bom e melhorado desenvolvimento.
Algoritmos
Trata-se de uma sequência finita de passos que um sistema deve seguir para a execução de alguma tarefa, pode se comparar um algoritmo com uma receitade bolo onde você segue o passo a passo até obter o resultado final que no caso seria o bolo pronto.
Conceito/Definição
Um programa de computador é baseado em um algoritmo escrito numa linguagem de computação como Pascal, Java, PHP, C#, Visual Basic, etc.., sendo assim o estudo de Algoritmos se torna imprescindível para os interessados em aprender alguma das linguagens de programação, pois como já dito anteriormente o Algoritmo define toda a sequência de acontecimentos dentro de um sistema, até a obtenção de um resultado final satisfatório.
Desenvolvendo um Algoritmo
Os algoritmos são descritos em uma linguagem conhecida como pseudocódigos, este nome é uma alusão à posterior implementação em uma linguagem de programação, utilizamos como pseudocódigo a nossa linguagem “Portugol”, lembrando que o desenvolvimento de um algoritmo não é vinculado a nenhuma linguagem de programação especifica, pois o mesmo algoritmo poderá ser utilizado em qualquer linguagem de programação.
Uma característica básica do Algoritmo é sua fácil interpretação de todos os passos a serem seguidos e implementados.
Regras de Construção
Para a escrita correta de um Algoritmo precisa-se descrever a sequência dos acontecimentos, utilizando uma maneira de fácil compreensão e com bastante objetividade, algumas regras podem ajudar como:
- Utilizar somente um verbo por frase.
- Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalha com informática.
- Utilizar frases curtas e simples.
- Ser Objetivo.
- Não utilizar palavras que cause indecisões.
Análise
Qualquer tarefa que siga um determinado padrão poderá ser descrita utilizando um algoritmo, como essas:
COMO FAZER PARA ESTACIONAR O CARRO
Ou então,
CALCULAR A MÉDIA DE APROVAÇÃO DE ALUNOS EM UM CURSO DE INFORMÁTICA
Para isso devemos primeiramente dividir os problemas em três fases fundamentais.
ENTRADA PROCESSAMENTO SAIDA
Sendo que:
ENTRADA: São os dados de entrada do algoritmo.
PROCESSAMENTO: São os procedimentos usados para chegar ao resultado final.
SAÍDA: São os dados já processados.
Desenvolvimento da Lógica (Portugol)
Imagine o seguinte problema: Calcular o resultado final dos alunos, onde serão informadas as notas dos quatro bimestres.
Onde
Será calculado a média, caso seja maior ou igual a “7” o aluno será Aprovado, caso contrário, será Reprovado.
Para criar o algoritmo proposto, faremos três perguntas:
a) Quais são os dados de entrada?
R: Os dados de entrada são 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 serão os dados de saída?
R: O dado de saída será a média final.
Abaixo o Algoritmo desenvolvido:
Inicio;
Entrada com 4 notas;
Calcular a média;
Se Media maior ou igual a 7;
Se Maior imprime “Aprovado”;
Se Menor imprime “Reprovado”;
Fim;
Representação Gráfica
Inicio ->
Entrada com 4 Notas ->
Calcular a média ->
Se a Média >= 7 ->
“Aprovado” “Reprovado” ->
Fim ->
Estrutura de Dados
Apesar de não se utilizar definição de tipos para as variáveis ou constantes em PHP, é de grande importância o conhecimento de pelo menos os tipos de dados mais utilizados, os quais são:
Inteiros: Abrange dados numéricos positivos ou negativos, excluindo-se qualquer fracionário.
Reais: Abrange dados positivos, negativos e números fracionários.
Caracteres: Abrange caracteres (letras) sendo capazes de armazenar uma sequência de caracteres.
Lógicos: Abrange dados do tipo lógico, sendo apenas duas possibilidades: “Verdadeiro” (true) e “Falso” (false).
Linguagem de Marcação (HTML)
Conceito/Definição
HTML é a abreviação para a expressão “HyperText Markup Language”, e foi desenvolvida por Tim Barners Lee na década de 1990, consiste em uma linguagem de marcação utilizada para criação de páginas WEB, onde criamos páginas baseadas em HTML, que podem ser interpretados por navegadores web, suas especificações são atualmente controladas pela W3C (World Wide Web Consortium).
Nessa Linguagem os elementos são definidos através de tags (etiquetas ou marcações), que tem a função de formatação de texto, formulários, links, imagens, tabelas, entre outros.
Os browsers (navegadores) tem a função de identificar essas tags e apresentarem de uma forma específica cada uma, a criação de um documento HTML e tão simples que pode ser feita no Bloco de Nota (Windows) ou Editor de Texto (Linux e Mac).
Como tudo em informática a linguagem HTML também possui suas evoluções as quais são 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 características do XML e o HTML5 baseia-se na quinta versão do HTML que traz novos recursos, principalmente na manipulação de conteúdo gráfico e multimídia, esta versão do HTML está muito robusta, porém atualmente há algumas incompatibilidades com os navegadores. 
Comandos Introdutórios
Os comandos HTML são formados por tag’s, as quais tem funções individuais, abaixo conheceremos as tag’s mais utilizadas em desenvolvimento de páginas de administração, as quais são:
	Inicio Tag:
	Fim Tag:
	Descrição:
	<html>
	</html>
	Marcador da codificação do documento HTML, é necessário para o início da codificação de todas as páginas, ela comportará todas as outras tag’s.
	<head>
	</head>
	Marcador do cabeçalho do documento HTML, comporta algumas tag’s dentre elas as de script e styles.
	<title>
	</title>
	Marcador do título do documento HTML, responsável pela definição do título da página.
	<body>
	</body>
	Marcador do corpo do documento HTML, a qual comportará as tag’s responsáveis por exibições e capturas de dados.
	<p>
	</p>
	Marcador de parágrafo do documento HTML, responsável pela tabulação dos dados exibidos na página.
	<h1>
	</h1>
	Marcador de formatação, responsável por criação de alguns formatos de títulos. Existem também o <h2>, <h3>, <h4>, <h5> e <h6>. 
	<form>
	</form>
	Marcador utilizado para delimitar um formulário, o qual tem a responsabilidade de capturar informações enviadas pelo usuário e transmitir através dos métodos POST ou GET.
	<fieldset>
	</fieldset>
	Marcador utilizado para delimitar a área onde se encontrarão os campos do formulário que capturarão os dados enviados pelo usuário.
	<table>
	</table>
	Marcador utilizado para a criação de tabelas.
	<tr>
	</tr>
	Marcador utilizado para a criação de linhas dentro de uma tabela.
	<th>
	</th>
	Marcador utilizado para a criação de colunas formatadas dentro de uma tabela.
	<td>
	</td>
	Marcador utilizado para a criação de colunas comuns dentro de uma tabela.
	<meta>
	-
	Marcador utilizado para descriminação da codificação de caracteres a ser utilizada no documento HTML.
	<input>
	-
	Marcador utilizado para criação de uma forma de entrada de dados.
	<b>
	</b>
	Marcador utilizado para Negritar alguma parte do texto a ser exibido.
	<i>
	</i>
	Marcador utilizado para Itálico.
	<u>
	</u>
	Marcador utilizado para Sublinhar alguma parte do texto a ser exibido.
	<a href>
	</a>
	Marcador responsável pela criação de links de navegabilidade no documento html.
Criando um Formulário
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cadastro de Clientes</title>
</head>
<body>
<form id="cadCliente" name="cadCliente" action="../INT/ClienteINT.php"
method="POST">
<fieldset>
<p><h1>Cadastrar Clientes</h1></p>
<p><h5>* CAMPOS OBRIGATÓRIOS</h5></p>
<p>Nome: <input type="text" name="nome" id="nome" value="" size="50" /> <b>*</b></p>
<p>Razão Social: <input type="text" name="razao_social" id="razao_social" value="" size="50" /></p>
<p>RG/IE: <input type="text" name="rg_ie" id="rg_ie" value="" size="50"/></p>
<p>CPF/CNPJ: <input type="text" name="cpf_cnpj" id="cpf_cnpj" value="" size="50" /></p>
<p>Endereço: <input type="text" name="endereco" id="endereco" value="" size="50" /></p>
<p>Numero: <input type="text" name="numero" id="numero" value="" size="50" /></p>
<p>Bairro: <input type="text" name="bairro" id="bairro" value="" size="50" /></p>
<p>Cidade: 
<select id="cidade" name="cidade">
<option value="0">Fernandópolis</option>
<option value="1">Macedônia</option>
<option value="2">Meridiano</option>
</select> <b>*</b></p>
<p>Observações:
<br/>
<textarea name="obs" id="obs" rows="4" cols="50"> </textarea></p>
<p><input type="submit" id="Cadastrar" name="Cadastrar" value="Cadastrar" /></p>';
</fieldset>
</form>
</body>
</html>
Linguagem de Manipulação Dinâmica (JavaScript)
Conceito/Definição
A Linguagem JavaScript consiste em uma linguagem baseada em scripts e padronizada pela ECMA International (Associação Especializada na Padronização de Sistemas de Informação), foi criada por Brendan Eich e surgiu em 1995 como linguagem de script cliente-slide de páginas web, trata-se de uma linguagem dinâmica, orientada a objeto e criada com a sintaxe similar à linguagem C, onde podemos utilizar métodos e funções dinâmicas para alteração e modelagem da página, ou seja, é uma linguagem capaz de modificar a seu documento HTML em modo de execução com participação do usuário. Sendo assim, com o uso deste tipo de linguagem se torna possível a manipulação de elementos HTML, criação de alertas para o usuário, etc.., isso tudo feito a partir de uma requisição que poderá ser ou não ser feita pelo usuário.
O JavaScript é muito bom para a interação com o usuário, uma vez que ele pode responder a ações rapidamente, tornando uma aplicação mais interativa, além de detectar ações do usuário que o HTML sozinho não poderia, tais como teclas pressionadas
Apesar de conter Java no nome, a linguagem JavaScript é distinta da linguagem Java e apresenta recursos não disponibilizados em Java ou C++, os scripts desenvolvidos em JavaScript são muito populares e amplamente integrados em páginas web devido à facilidade de interação com o Document Object Model (DOM) da página.
Uma linguagem de script tem a funcionalidade de ser executada no interior de programas ou de outra linguagem de programação. Outras linguagens usadas como script são: ActionScript, PHC, Python, VBScript, entre outras
Comandos Introdutórios
Para a utilização do JavaScript recomenda-se que os códigos sejam colocados diretamente na tag head do HTML ou criado um arquivo .js (JavaScript) e linkado na head.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Exemplo JavaScript</title>
<script type=”text/javascript”>
function msg() { //Criação de Função sem PARAMETROS
alert(‘Mensagem JavaScript’); //Criação de Mensagem
}
function excluir(i){ //Criação de Função com PARAMETROS (i)
if(confirm("Excluir”)){
	//Executa a Exclusão
}
}
</script>
</head>
<body>
<h1>CORPO DA PAGINA</h1>
</body>
</html>
Modelagem Banco Dados (Diagramas)
Conceito/Definição
Diagramas são representações gráficas que auxiliam na análise e desenvolvimento de um sistema, existem muitos tipos de diagramas, mas durante a programação utilizaremos os diagramas estruturais, dentre esse tipo será utilizado o “Diagrama de Classe”, para a criação de um rascunho de como seria modelado o Banco de Dados, 
Conceitos Principais Utilizados
Apesar de existirem vários tipos de ligações de classe as mais utilizadas são as Associações e Generalizações.
Associação
A associação e a forma mais simples de ligação de Classe, porém é necessário se definir a multiplicidade dessa associação a qual pode variar, esse tipo de ligação possui também algumas regras para auxiliar o desenvolvimento do Banco de Dados, as quais estão expressa na tabela abaixo.
	Multiplicidade
	Regra Aplicada
	1 – 1
	O campo de ligação fica na Classe com a multiplicidade 1, ou seja, qualquer uma delas.
	* – 1
	O campo de ligação fica na Classe com a multiplicidade 1.
	1 – *
	O campo de ligação fica na Classe com a multiplicidade 1.
	* – *
	Ocorre a divisão da ligação, e a criação de uma nova classe para gerenciar esse tipo de ligação, sendo assim, a divisão resultante será equivalente a duas 1 – *.
Generalização
Mais conhecida como Herança, essa forma de relacionamento pode ser facilmente implementada, pois como o próprio nome diz ela ocorre quando uma classe herda os atributos de uma classe mais genérica, além disso a Herança ou Generalização não possui multiplicidade, fazendo assim com que os filhos automaticamente recebam o campo de ligação, pois, por se tratarem de filhos eles receberam as características da classe pai.
Modelando Diagrama da Fase de Projeto
Linguagem PHP – Orientada à Objeto
Conceito/Definição
PHP é a sigla de “Hipertext Preprocesor”, trata-se de uma programação do lado do servidor e independente de plataforma, rápida, com uma grande livraria de funções e muita documentação, foi criado originalmente em 1994 por Rasmus Lerdorf, mas como o PHP este desenvolvimento em política de código aberto, ao longo de sua história teve muitas contribuições de outros desenvolvedores.
Linguagens que trabalham do lado do servidor consistem naquelas que se executam no servidor web, antes da página ser enviada através da Internet ao cliente, linguagens que executam no servidor podem realizar acessos a base de dados, conexões em rede e outras tarefas para criar a pagina final que será vista pelo cliente, porém essa página enviada ao cliente terá em seu corpo comandos HTML, pois será o resultante da execução PHP, sendo assim compatível com todos os browsers.
Abaixo uma Ilustração de como é feita a comunicação PHP com o servidor e a devolução para o cliente:
Esquema do funcionamento das páginas PHP
PHP se escreve dentro do código HTML, o que o faz realmente fácil de utilizar, assim como ocorre com o popular ASP de Microsoft, porém com algumas vantagens como sua gratuidade, independência de plataforma, rapidez e segurança.
Qualquer pessoa pode baixar através da página principal de PHP www.php.net e de forma gratuita, um módulo que faz com que nosso servidor web compreenda os scripts realizados nesta linguagem. É independente de plataforma, visto que existe um módulo de PHP para quase qualquer servidor web. Isto faz com que qualquer sistema possa ser compatível 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 rápido que ASP, dado que se executa em um único espaço de memória e isto evita as comunicações entre componentes COM que se realizam entre todas as tecnologias implicadas em uma página ASP.
Algumas das principais características que vem destacando o PHP no mercado e a grande compatibilidade com as bases de dados mais comuns, e suas funções de envio de correio eletrônico, upload de arquivos, criação de arquivos dinamicamente, dentre outras.
Interfaces, Classe e Objeto
A Programação Orientada a Objetos foi desenvolvida por Alan Kay, que desenvolveu a linguagem de programação Smalltalk, mas mesmo antes desta criação já existiam algumas ideias da Programação Orientada a Objeto, e essas já estavam sendo aplicadas, sendo assim, a primeira linguagem onde se utilizou realmente essa ideia foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967.
Com base no descrito acima podemos perceber que o “Paradigma de Programação Orientada a Objeto”, já é bastante antigo, mas só atualmente que vem sendo aceito e implementado em grandes empresas de desenvolvimento, alguns exemplos de linguagens modernas que utilizam essa ideia são: Java, C#, C++, Object Pascal (Delphi),Ruby, Python, Lisp, PHP, dentre outras. Porém a maioria delas adotar parcialmente a ideia, dando espaço para o antigo modelo procedural de programação também.
Então já que conhecemos uma pequena parte da história da Orientação a Objeto, vamos definir seus principais componentes: Interfaces, Classes e Objetos.
Interfaces: consiste, em basicamente um molde para a criação de uma classe, pode ser utilizada com o intuito de proteção de código, bem como o intuito de reaproveitamento.
Classes: consiste, na estrutura fundamental para que se possa definir novos objetos, pois através desta se torna possível a criação de novos objetos, uma classe é definida em código-fonte, a qual deve possuir nome, um conjunto de atributos e métodos que realizam algum tipo de ação, podendo gerar ou não um resultado.
Objeto: como já expressado anteriormente, o objeto é basicamente uma variável criada a partir de uma classe, essa variável terá a possibilidade de efetuar acessos a funções e variáveis da classe desde que os mesmos estejam com a visualização public, ou protected, a quais serão discutidas nos próximos itens.
Visibilidade
Como o próprio nome já descreve, visibilidade baseia-se na forma que a classe criada se comportará nos sistemas, no caso possuímos três níveis de visibilidade, lembrando que essas visibilidades podem ser aplicadas tanto a métodos, quanto a variáveis.
	Formas de Visibilidades
	PUBLIC
	Esta forma de visualização permite que classes de qualquer outra camada de seu projeto tenha acesso a variável ou função criada.
	PROTECTED
	Esta forma de visualização permite que somente classes da mesma camada da classe onde está sendo criada essa variável ou tenha o acesso.
	PRIVATE
	Esta forma de visualização, é amplamente utilizada na metodologia de Encapsulamento, é a qual somente permite que a variável ou função criada somente seja acessada a partir da mesma classe onde foi criada.
Variáveis e Constantes
Variáveis e Constantes são de fácil entendimento, pois variável, baseia-se na criação de um elemento dentro de um programa e esse elemento poderá receber um valor e com o tempo esse valor poderá ser modificado, no caso da constante, cria-se um elemento o qual recebe um valor e não poderá de forma nenhuma ser alterado.
Tipos de Variáveis
Tipos de variáveis não condizem somente com o tipo de dados que essa variável poderá receber, pois nesse caso o PHP é dinâmico.
Mas as variáveis podem ser tratadas das seguintes formas:
Variáveis Parâmetros: são variáveis que as funções necessitam para que possam executar alguma determinada ação.
Variáveis Globais: são variáveis criadas logo após a criação da classe e essas variáveis podem ser utilizadas em qualquer função dessa classe, caso essa variável seja public poderá ser utilizada em outras classes também.
Variáveis Locais: são variáveis criadas dentro de uma função e está somente será acessível dentro da função, sendo assim após o final da função essa variável deixará de existir.
Variáveis Objetos: como já estudado, são variáveis criadas a partir de classes, e essas variáveis passam a ter acesso a todos os métodos das classes a partir qual foi criada, essas variáveis poderão assumir a forma de: Variáveis Objeto Parâmetros, Variáveis Objeto Global, Variáveis Objeto Local.
Apontador “This”
O apontador “this”, é utilizado para diferenciar uma variável global de uma variável local basicamente, pois durante a codificação poderemos utilizar variáveis com a mesma nomenclatura.
Camadas de Desenvolvimento (PHP)
No modelo baseado em MVC, que utilizaremos, iremos trabalhar com 5 camadas as quais são:
Camada VIEW: conhecida como Visão, tem como responsabilidade o armazenamento dos arquivos de manipulação visual, tendo assim contato direto com o usuário.
Camada INT: conhecida como Interface, tem como responsabilidade a manipulação de variáveis provindas do usuário e mensagens destinadas ao usuário.
Camada CTR: conhecida como Controle, tem como responsabilidade a manipulação de variáveis providas da Interface, criação de objetos de modelagem das mesmas, e o envio deste objeto para a camada responsável pela manipulação do banco.
Camada DTO: conhecida como Modelagem, tem como responsabilidade a modelagem das tabelas do Banco de Dados, onde se utiliza metodologias como o encapsulamento para a manipulação das variáveis que transitaram até o seu destino final.
Camada DAO: conhecida como Manipulação do Banco de Dados, tem como responsabilidade o envio de todos os comandos destinados ao Banco de Dados, dentre eles estão todos os Inserts, Updates, Deletes e Selects.
Rotina de Programação
Basicamente consiste em uma forma de agilizar o processo de aprendizagem montando uma rotina a qual montará o fluxo correto de dados provenientes do Usuário, o que se entende por rotina, simplesmente um caminho ou receita a ser repetido várias vezes, abaixo está expressa a rotina que utilizaremos para a fixação da linguagem:
Rotina de desenvolvimento para início de Projeto:
DAO – criação da classe/interface conexão.
DTO – modelagem de uma tabela.
DAO – criação de métodos de gerencia de dados da tabela modelada.
CTR – criação de controle de dados da tabela modelada.
INT – criação de Interface da tabela modelada.
VIEW – criação visual da tabela modelada.
Rotina de desenvolvimento continuação de Projeto: 
DTO – modelagem de uma tabela.
DAO – criação de métodos de gerencia de dados da tabela modelada.
CTR – criação de controle de dados da tabela modelada.
INT – criação de Interface da tabela modelada.
VIEW – criação visual da tabela modelada
Herança, Polimorfismo e Encapsulamento
Esses são alguns dos conceitos de relacionamentos de classes ou tabelas mais utilizadas, que passaram a ser desenvolvido com mais exatidão e compreensão com a utilização da Orientação a Objeto.
Herança
Definição/Conceito
A Herança como já explicado, ocorre quando uma classe recebe os atributos de outra classe mais genérica podendo assim acessar os métodos dessa classe genérica como se fosse métodos dela própria.
Existem várias formas de implementar de uma herança na codificação da linguagem de programação, como sempre se ouve, “ninguém tem a mesma lógica”, então adiante veremos a explicação de uma forma de implementação de Herança utilizada atualmente.
Metodologia de Implementação
Abaixo teremos a descritiva de uma das formas de implementação de uma herança, essa feita de acordo com o seguinte relacionamento:
Implementação Descritiva:
Cria-se a Modelagem (DTO) das todas as classes neste relacionamento, adicionando a implementação do extends na modelagem do Funcionário.
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 Herança com o Objeto Funcionário, sendo assim possível dizer que o Objeto Funcionário possui um objeto Cidade, e esse Objeto Cidade possui um Objeto Estado.
Na Camada DAO, cria-se as Interfaces de todas classes neste relacionamento, mas para o foco ficar na Herança trabalharemos com a DAO do Pessoa e Funcionário.
Na DAOIMP do Pessoa, cria-se normalmente os métodos de movimentação de dados, nas pesquisas torna-se necessário a pesquisa pelo campo “cpf_cnpj”, o qual como todos os outros retornará o “id” da pessoa, caso haja cadastrada.
Na DAOIMP do Funcionário, cria-se os métodos de movimentação de dados, porém esse será um pouco diferente dos demais:
Temos pela frente 4 casos a serem tratados, porém um deles não será uma vez que a própria herança o eliminará, os quais são:
Existe pessoa, porém não existe Funcionário, no caso exemplo de um cliente vir a ser um funcionário, lembrando que não poderá se repetir dados em pessoa, para que não haja problemas de normalização de dados.
Existe pessoa, existe Funcionário, no caso exemplo de um cadastro de Funcionário vir a ser Alterado.
Não existe pessoa, não existe funcionário, no caso de uma nova pessoa estarsendo inserida no cadastro.
Não existe pessoa, existe funcionário, este caso a própria modelagem do banco não permite, por não ser possível a existência de uma classe filha sem uma classe pai.
Na Implementação do DAOIMP, do Funcionário primeiramente haverá a separação dos dados que serão enviados a tabela pai, através de um objeto mais genérico, com esses dados separados, é feita a pesquisa na tabela genérica (Pessoa) através do “cpf_cnpj”.
Caso haja resultado: Será feita a pesquisa em Funcionário, pelo “id” de Pessoa retornado da pesquisa anterior.
Caso haja resultado: Será efetuado duas alterações, uma na tabela Pessoa, outra na Tabela Funcionário.
Caso não haja resultado: Será efetuado uma alteração na tabela Pessoa, pois ela já existe, e após será efetuado uma inserção na tabela Funcionário, com o “id” restaurado da pesquisa em Pessoa.
Caso não haja resultado: Será efetuado duas inserções, sendo um na Tabela Pessoa e outro na Tabela Funcionário.
Na Camada CTR, INT e VIEW, haverá somente a implementação da classe Funcionário.
Fim.
Polimorfismo
Polimorfismo consiste no princípio de que as classes que derivam de uma única classe base, são capazes de invocar métodos que, embora apresentem a mesma assinatura (nome), podem se comportar de maneira diferente para cada uma das classes derivadas, é utilizado para selecionarmos de forma dinâmica as funcionalidades de uma aplicação. Basicamente, através do polimorfismo os mesmo atributos e objetos podem ser utilizados em objetos distintos, porém, com implementações lógicas distintas. 
Encapsulamento
É uma técnica muito utilizada na Orientação a Objeto, pois ela é capaz de ocultar detalhes internos do funcionamento dos métodos de uma classe, pois os conhecimentos dos mesmos são desnecessários para o ponto de vista de um objeto, uma famosa aplicação do Encapsulamento é a geração dos “set’s” e “get’s”, na camada de Modelagem de Banco (DTO). 
Estruturas de Controles
São lógicas de comandos criados, afim de que o Sistema faça uma determinada ação através de algumas orientações.
Estruturas de Condições
Esse tipo de Estrutura é amplamente utilizado, pois ela aplica uma condição e dependendo do retorno dela torna-se possível a criação de dois possíveis caminhos, no ambiente de programação ela e conhecida como Se, ou em forma de comando mesmo o If, abaixo alguns exemplos de utilizações.
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 ‘são iguais’;
}
?>
Estruturas de Caso
Esse tipo de Estrutura é utilizado em condições onde temos muitas possibilidades e essa possibilidade pode ser tratada de uma forma mais simples utilizando a Estrutura de Caso, ou mais conhecida em programação como switch case, abaixo um exemplo de utilização:
<?php
$a=1;
switch ($a) {
 case 1: 
 echo ‘Entrei caso 1’;
 break;
 case 2: 
 echo ‘Entrei caso 2’;
 break;
 case 3: 
 echo ‘Entrei caso 3’;
 break;
 default: 
 echo ‘Entrei caso Padrão’;
 break;
 }
?>
Estruturas de Repetições
Estrutura muito utilizada, pois ela possibilita a repetição de um comando ou uma coleção de comandos de forma finita ou baseado em uma condição, abaixo estão listadas as estruturas atuais:
Laço de Repetição Para (For)
Consiste em uma estrutura, onde se constrói um laço finito onde será expresso um início e se possui um fim previsto, a estrutura principal desse tipo de laço baseia-se em: 
for(valor inicial; comparação finita; modificação de valor){
comando a ser executado
}
Utilização no código:
<?php
		for($i=0; $i<10; $i++){
			echo ‘contador: ‘.$i;
}
?>
Laço de Repetição Para Cada (Foreach)
Consiste em uma estrutura, criada a partir da estrutura for, é uma abstração utilizada para percorrer listas de objetos ou lista de elementos, basicamente o laço será repetido enquanto haja elemento na lista, e esse elemento será extraído para uma variável possibilitando a interação, a estrutura principal desse tipo de laço baseia-se em:
foreach(coleçãoElemento as elemento){
comando a ser executado
}
Utilização no código:
<?php
$nomes = array('Thiago', 'João', 'Ricardo', 'Paula');
foreach($nomes as $nome){
		echo ‘nome: ‘.$nome;
}
?>
Laço de Repetição Enquanto (While)
Consiste em uma repetição baseada em uma condição, sendo assim, enquanto essa condição for satisfeita, ou seja, enquanto ser verdadeira a condição o bloco de comando será repetido, a estrutura principal desse laço basea-se em:
while (condição){
		Comando a ser executado
}
Utilização no código:
<?php
$n = 1;
while($n<=10){
	echo ‘numero: ‘.$n;
$n++;
}
?>
Laço de Repetição Faça Enquanto (Do .. While)
Seu funcionamento e baseado no laço while, porem com uma individualidade, nesse laço não importa se a condição seja verdadeira pelo menos uma vez o comando dentro dele será executado, pois a verificação da condição e feita após a primeira execução do comando, sua estrutura principal baseia-se em:
do{
		comando a ser executado
}while(condição);
Utilização no código:
<?php
		$n=1;
		do{
echo ‘numero’.$n;
$n++;
}while($n<=10);
?>
Projeto Exemplo
Descrição
O projeto a seguir consiste em um cadastro de estados, onde encontraremos um cadastro simples com a finalidade e exemplificar a utilização da ORIENTAÇÃO A OBJETO em PHP e conhecer os comandos principais atualmente utilizados, nele manipulamos a modelagem utilizando 5 camadas, que possui as características da Modelagem MVC, trabalharemos com o tipo de conexão PHP PDO, que consiste em uma forma de conexão padronizada que provê grandes vantagens quanto a migração de Banco de Dados, outro assunto que será abordado é o conceito da Interface Genérica, que será utilizada na padronização das camadas DAO e CTR.
Para o desenvolvimento utilizaremos a rotina de desenvolvimento mencionada anterior, sendo assim a sequência de desenvolvimento será a seguinte: DAO (conexão), DTO (modelagem da tabela Estado, DAO (implementação de métodos do banco referente a tabela Estado), CTR (implementação dos controles de funções da tabela Estado), INT (implementação da interface de recepção dos dados da tabela Estado) e VIEW (implementação visual, criação de formulário para a coleta de dados referente a tabela Estado).
Classe/Tabela Banco de Dados
A classe abaixo foi previamente criada no banco de dados como uma tabela, e será utilizada no exemplo de implementação.
Implementação Camada DAO (Conexão)
Nessa camada será implementada uma classe PHP, a classe conexão é a responsável por localizar e se conectar ao banco de dados informado, essa classe é criada somente uma vez no projeto, pois através dela que todas as outras classes irão tem acesso às tabelas do banco de dados, podendo assim modifica-los ou pesquisa-los, acompanhe o desenvolvimento abaixo, lembrando que as formas de comentários no PHP são “//” para comentários curtos e “/*” para comentários longos.
Implementação Classe ConexaoIMP:
<?php
class Conexao {
 public function conectaDB(){
 try{
 $host = "localhost";
 $porta = "3306";
 $banco = "aula_big";
 $dsn = "mysql:host=$host; port=$porta; dbname=$banco";
 $usuario = "root";
 $senha = "big1010";
 $opcoes = array(
 PDO:: ATTR_PERSISTENT => true,
 PDO:: ATTR_CASE => PDO::CASE_LOWER
 );
 return new PDO($dsn, $usuario, $senha, $opcoes);
 } catch (PDOException$e) {
 echo 'Erro' . $e->getMessage();
 return null;
 }
 }
}
?>
Implementação Camada DTO (Modelagem)
A classe DTO, conhecida como classe de modelagem, tem a responsabilidade de receber os dados através de objetos criados a partir dela, sendo que esses dados podem ter sido resultado de uma consulta no banco de dados, formando assim uma coleção de objetos DTO, ou um simples objeto DTO que será responsável pelo armazenamento dos dados até que eles cheguem à tabela referida no banco de dados. Nessa camada utilizaremos a metodologia conhecida como Encapsulamento, onde se torna o acesso as variáveis da classe somente são possíveis através dos seus métodos públicos e será implementada uma classe PHP, acompanhe o desenvolvimento abaixo:
Implementação classe EstadoDTO:
<?php
class EstadoDTO {
 private $id;
 private $nome;
 private $sigla;
 private $status;
 private $op;
 public function getOp() {
 return $this->op;
 }
 public function setOp($op) {
 $this->op = $op;
 }
 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;
 }
}
?>
Implementação Camada DAO (Métodos Manipulação Dados)
Implementação da Interface Genérica
A Interface Genérica tem o principal intuito de padronizar todas as Classe que a utilizar em sua implementação, sendo assim para um projeto com um grande nível de padronização ela poderá ser utilizada nas Camadas CTR e DAO, como um “Molde” para as classes ali criadas, acompanhe o desenvolvimento abaixo.
<?php
interface Generica {
public function modificar($objeto);
public function pesquisa($objeto);
}
?>
Implementação da Classe EstadoDAO
A classe DAO, além de abrigar a Conexão, também cuidará de todas as funções de acesso a tabelas do Banco de Dados, sendo assim todos os comandos de SQL deverão ficar nessa camada, além de todas as variáveis que possuírem alguma dependência do Banco de Dados, e esses métodos poderão ser controlados por uma Interface (no caso a Genérica) e uma Classe do PHP agindo em conjunto, acompanhe o desenvolvimento abaixo da Classe EstadoDAO:
<?php
require_once '../DTO/EstadoDTO.php';
require_once 'Conexao.php';
require_once 'Generica.php';
class EstadoDAO implements Generica{
 public function modificar($objeto) {
 try {
 $estadoDTO = $objeto;
 $conexao = new Conexao();
 $con = $conexao->conectaDB();
 $stmt = null;
 $parametros = null;
 $rs = false;
 switch ($estadoDTO->getOp()){
 case 1:
 $stmt = $con->prepare('INSERT INTO estado(nome, sigla, status)VALUES(?,?,?);');
 $parametros = array($estadoDTO->getNome(), 
$estadoDTO->getSigla(),$estadoDTO->getStatus());
 $rs = $stmt->execute($parametros);
 break;
 case 2:
 $stmt = $con->prepare('UPDATE estado SET nome=?, sigla=?, status=? WHERE id=?;');
 $parametros = array($estadoDTO->getNome(),
$estadoDTO->getSigla(),$estadoDTO->getStatus(), $estadoDTO->getId());
 $rs=$stmt->execute($parametros);
 break;
 case 3:
 $stmt=prepare('DELETE from estado WHERE id=?');
 $parametros=array($estadoDTO->getId());
 $rs=$stmt->execute($parametros);
 break; 
 }
 
 $stmt = null;
 return $rs;
 
 } catch (Exception $exc) {
 echo $exc->getMessage();
 return false;
 }
 }
 public function pesquisar($objeto) {
 try {
 $estadoDTO = $objeto;
 $conexao = new Conexao();
 $con = $conexao->conectaDB();
 $stmt = null;
 $dados[]=NULL;
 
 switch ($estadoDTO->getOp()){
 case 1: //todos
 $stmt = $con->prepare("select * from estado;");
 $parametros = array();
 break;
 case 2: //nome
 $stmt = $con->prepare("select * from estado where nome like ?;");
 $parametros = array('%' . $estadoDTO->getNome() . '%');
 break;
 case 3: //status
 $stmt = $con->prepare("select * from estado where status=?;");
 $parametros =array($estadoDTO->getStatus());
 break;
 case 4: //id
 $stmt = $con->prepare("select * from estado where id=?;");
 $parametros = array($estadoDTO->getId());
 break; 
 }
 
 $stmt->execute($parametros);
 $cont = 0;
 
 while ($linha = $stmt->fetch()) {
 $dado = new EstadoDTO();
 $dado->setId($linha[0]);
 $dado->setNome($linha[1]);
 $dado->setSigla($linha[2]);
 $dado->setStatus($linha[3]);
 $dados[$cont] = $dado;
 $cont++;
 } 
 $stmt = null;
 return $dados; 
 } catch (Exception $exc) {
 echo $exc->getMessage();
 return NULL;
 }
 
 }
}
?>
Implementação Camada CTR (Métodos de Controle Dados)
A classe CTR, responsável pelo controle de fluxo de dados no sistema, pois ela que irá definir para onde vão os dados dentro do sistema e para onde será retornada a resposta para isso será implementada uma classe do PHP, podendo ser também padronizada pela Generica, acompanhe o desenvolvimento abaixo:
Implementação Classe EstadoCTR:
<?php
require_once '../DTO/EstadoDTO.php';
require_once '../DAO/Generica.php';
require_once '../DAO/EstadoDAO.php';
class EstadoCTR implements Generica{
 
 public function modificar($objeto) {
 try {
 $estadoDAO = new EstadoDAO();
 return $estadoDAO->modificar($objeto);
 } catch (Exception $ex) {
 echo $ex->getMessage();
 return false;
 }
 }
 
 public function pesquisar($objeto) {
 try {
 $estadoDAO = new EstadoDAO();
 return $estadoDAO->pesquisar($objeto); 
 } catch (Exception $ex) {
 echo $ex->getMessage();
 return NULL;
 }
 }
}
?>
Implementação Camada INT (Interface de Dados)
A camada INT, tem a função de receber os dados enviados pelo VIEW e fazer os devidos tratamentos é de sua responsabilidade também obter as ações que o usuário deseja efetuar, nela será feita a implementação de um Arquivo do PHP, acompanhe o desenvolvimento abaixo:
Implementação Classe EstadoINT:
<?php
require_once '../CTR/EstadoCTR.php';
require_once '../DTO/EstadoDTO.php';
$estadoDTO=new EstadoDTO();
$estadoCTR=new EstadoCTR();
if(isset($_POST['cadastrar'])){
 $estadoDTO->setOp(1);
 $estadoDTO->setNome($_POST['nome']);
 $estadoDTO->setSigla($_POST['sigla']);
 $estadoDTO->setStatus($_POST['status']);
 
 if($estadoCTR->modificar($estadoDTO)){
 echo "<script> alert('Estado Cadastrado com Sucesso!'); "
 . " window.location = '../VIEW/lista_estadoVIEW.php';</script>";} else {
 echo "<script> alert('Problema ao Cadastrar');</script>"; 
 }
} 
if(isset($_POST['alterar'])) {
 $estadoDTO->setOp(2);
 $estadoDTO->setNome($_POST['nome']);
 $estadoDTO->setSigla($_POST['sigla']);
 $estadoDTO->setStatus($_POST['status']);
 $estadoDTO->setId($_POST['id']);
 
 if($estadoCTR->modificar($estadoDTO)) {
 echo "<script> alert('Estado Alterado com Sucesso!'); "
 . " window.location = '../VIEW/lista_estadoVIEW.php';</script>";
 } else {
 echo "<script> alert('Problema ao Alterar');</script>";
 }
}
if(isset($_GET['excluir'])){
 $estadoDTO->setOp(3);
 $estadoDTO->setId($_GET['excluir']);
 if ($estadoCTR->modificaEstado($estadoDTO)) {
 echo("<script>alert('Excluído com Sucesso!');
 window.location = '../VIEW/lista_estadoVIEW.php'; </script>");
 } else {
 echo("<script>alert('Erro ao Excluir!'); 
 window.location ='../VIEW/lista_estadoVIEW.php';</script>");
 }
 
}
?>
Implementação Camada VIEW (Visual)
Essa é a responsável pela forma de exibição ao Usuário, ou seja basicamente aqui é trabalhado todo o visual do site, porém, como o foco deste estudo não é visual abaixo teremos uma implementação com um visual bem reduzido, nessa camada costuma-se utilizar outras linguagens além da PHP e HTML utilizada até atualmente, a quais podem ser CSS, JAVASCRIPT, JAVASCRIPT (JQUERY), FLASH, dentre outras, nesse exemplo implementaremos dois arquivos do PHP, para que projeto fique com toda sua funcionalidade em amplo funcionamento, acompanhe o desenvolvimento abaixo:
Implementação Arquivo EstadoVIEW:
<?php
require_once '../CTR/EstadoCTR.php';
require_once '../DTO/EstadoDTO.php';
$estadoDTO = new EstadoDTO();
$estadoCTR = new EstadoCTR();
//restauração para o alterar
if (isset($_GET['a'])) {
 $estadoDTO->setOp(4);
 $estadoDTO->setId($_GET['a']);
 $dadosEstado = $estadoCTR->pesquisar($estadoDTO);
 
 if ($dadosEstado != NULL) {
 $id = $dadosEstado[0]->getId();
 $nome = $dadosEstado[0]->getNome();
 $sigla = $dadosEstado[0]->getSigla();
 $status = $dadosEstado[0]->getStatus();
 }
}
?>
<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>Estados</title>
 </head>
 <body>
 <?php
 if ($id == "") {
 echo '<h1>Cadastro Estado</h1>';
 } else {
 echo '<h1>Alterar Estado</h1>';
 } 
 
 ?>
 <form id="cadestado" name="cadestado" method="POST" action="../INT/EstadoINT.php">
 <p>Nome: <input type="text" name="nome" id="nome" value="<?php echo $nome; ?>"/></p>
 <p>Sigla: <input type="text" name="sigla" id="sigla" value="<?php echo $sigla; ?>"/></p>
 <p>Status: 
 <select name="status" id="status">
 <option value="0" <?php if ($status == 0) { echo'selected="selected"'; } ?>>Ativo</option>
 <option value="1" <?php if ($status == 1) { echo'selected="selected"'; } ?>>Inativo</option>
 </select></p>
 <?php
 if ($id == "") {
 echo '<p><input type="submit" name="cadastrar" id="cadastrar" value="Cadastrar"/></p>';
 } else {
 echo '<p><input type="submit" name="alterar" id="alterar" value="alterar"/></p>';
 echo '<p><input type="hidden" name="id" id="id" value="'.$id.'"/></p>';
 }
 ?>
 </form>
 </body>
</html>
Implementação Arquivo lista_estadoVIEW:
<?php
require_once '../CTR/EstadoCTR.php';
require_once '../DTO/EstadoDTO.php';
$estadoDTO=new EstadoDTO();
$estadoCTR=new EstadoCTR();
if(isset($_POST['pesquisar'])){
 $tipo=$_POST['tipopes'];
switch ($tipo){
 case 0://pesquisa de todos
 $estadoDTO->setOp(1);
 break;
 case 1://pesquisa de nome
 $estadoDTO->setOp(2);
 $estadoDTO->setNome($_POST['nomepes']);
 break;
 case 2://pesquisa de status
 $estadoDTO->setOp(3);
 $estadoDTO->setStatus($_POST['statuspes']);
 break;
 default ://pesquisa idefinida
 echo 'Tipo de Pesquisa não encontrada';
 break;
 }
 
 $dados=$estadoCTR->pesquisar($estadoDTO); 
}
?>
<html>
 <head>
 <meta charset="UTF-8">
 <title>Pesquisa de Estado</title>
 </head>
 <body>
 <h1>Pesquisa de Estado</h1>
 <br/>
 <br/>
 <a href="EstadoVIEW.php">Novo</a>
 <br/>
 <form id="pesEstado" name="pesEstado" method="POST" action="lista_estadoVIEW.php">
 <p><input type="radio" name="tipopes" id="tipopes" value="0" checked="true"/>Todos</p>
 <p><input type="radio" name="tipopes" id="tipopes" value="1"/>Nome:<input type="text" name="nomepes" id="nomepes" value=""/></p>
 <p><input type="radio" name="tipopes" id="tipopes" value="2"/>Status:<select name="statuspes" id="statuspes"><option value="0">Ativo</option><option value="1">Inativo</option></select></p>
 <p><input type="submit" name="pesquisar" id="pesquisar" value="Pesquisar"/></p>
 </form>
 <?php
 if(sizeof($dados)>0 && dados[0]!=null){
 ?>
 <table id="listaEstado" name="listaEstado" border="10">
 <tr>
 <th>Nome</th>
 <th>Sigla</th>
 <th>Status</th>
 <th colspan="2">Editar</th>
 </tr>
 <?php
 foreach ($dados as $linha) {
 if ($linha != NULL) {
 if ($linha->getStatus() == 0) {
 $status='Ativo';
 } else if ($linha->getStatus() == 1) {
 $status = 'Inativo';
 } else {
 $status = 'Indefinido';
 }
 echo '<tr>
 <td>' . $linha->getNome() . '</td>
 <td>' . $linha->getSigla() . '</td>
 <td>' . $status . '</td>
 <td><a href="EstadoVIEW.php?a=' . $linha->getId() . '">Alterar</a></td>
 <td><a href="../INT/estadoINT.php?excluir=. $linha->getId() . ‘" >Excluir</a></td>
 </tr>';
 }
 }
 
 } else if(isset($_POST['pesquisar'])) {
 echo 'Consulta sem resultados';
 }
 
 ?>
 </table>
 </body>
</html>
Sessões e Controle de Login
Sessões são tipos de variáveis utilizada para controles de usuário nos browsers (navegadores), essas variáveis são criadas no sistema utilizado pelo cliente, sendo elas uma das formas mais seguras de se armazenar dados.
O Controle de Login, baseia-se em uma implementação na qual buscamos informação do banco de dados e a partir desses dados torna-se possível o controle de acesso através de tipos e senhas, recomenda-se que esses tipos sejam armazenados através de números e as senhas sejam armazenadas utilizando algum tipo de criptografia, mais a frente teremos a implementação desse controle que utilizará como base a tabela modelada abaixo, e seguirá a rotina de desenvolvimento, nesse caso será continuação:
Camada DTO
Criação da classe do PHP UsuarioDTO, a qual tem a responsabilidade de implementar todos os dados da tabela Usuário. 
<?php
class UsuarioDTO {
 
 private $id;
 private $login;
 private $senha;
 private $tipo;
 private $status;
 private $op;
 
 public function getId() {
 return $this->id;
 }
 public function setId($id) {
 $this->id = $id;
 }
 public function getLogin() {
 return $this->login;
 }
 public functionsetLogin($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;
 }
 public function getOp() {
 return $this->op;
 }
 public function setOp($op) {
 $this->op = $op;
 }
}
?>
Camada DAO
Criação da Classe do PHP, para o desenvolvimento dos métodos de acesso à tabela Usuário, sendo essa Classe baseada na interface a Genérica e denominada como UsuarioDAO.
<?php
require_once '../DTO/UsuarioDTO.php';
require_once 'Conexao.php';
require_once 'Generica.php';
class UsuarioDAO implements Generica {
 public function modificar($objeto) {
 try {
 $usuarioDTO = $objeto;
 $conexao = new Conexao();
 $con = $conexao->conectaDB();
 $stmt = null;
 $parametros = null;
 $rs=false;
 switch ($usuarioDTO->getOp()) {
 case 1: //gravar
 $stmt = $con->prepare('INSERT INTO usuarios(login, senha, tipo, status) VALUES (?, ?, ?, ?);');
 $parametros = array($usuarioDTO->getLogin(), $usuarioDTO->getSenha(), $usuarioDTO->getTipo(), $usuarioDTO->getStatus());
 $rs = $stmt->execute($parametros);
 break;
 case 2 : //alterar
 $stmt = $con->prepare('UPDATE usuarios SET login=?, senha=?, tipo=?, status=? WHERE id=?;');
 $parametros = array($usuarioDTO->getLogin(), $usuarioDTO->getSenha(), $usuarioDTO->getTipo(), $usuarioDTO->getStatus(), $usuarioDTO->getId());
 $rs = $stmt->execute($parametros);
 break;
 case 3 : //excluir
 $stmt = $con->prepare('DELETE FROM usuarios WHERE id=?;');
 $parametros = array($usuarioDTO->getId());
 $rs = $stmt->execute($parametros);
 break;
 }
 $stmt = null;
 return $rs;
 } catch (Exception $exc) {
 echo $exc->getMessage();
 return false;
 }
 }
 public function pesquisar($objeto) {
 try {
 $usuarioDTO = $objeto;
 $conexao = new Conexao();
 $dados[] = new usuarioDTO();
 $con = $conexao->conectaDB();
 $stmt = null;
 $parametros = null;
 $dados[]=null;
 switch ($usuarioDTO->getOp()) {
 case 1: //todos
 $stmt = $con->prepare('SELECT * FROM usuarios;');
 $parametros = array();
 break;
 case 2: //todos ativos
 $stmt = $con->prepare('SELECT * FROM usuarios WHERE status=0;');
 $parametros = array();
 break;
 case 3: //id
 $stmt = $con->prepare('SELECT * FROM usuarios WHERE id=?;');
 $parametros = array($usuarioDTO->getId());
 break;
 case 4: //login
 $stmt = $con->prepare(' SELECT * FROM usuarios WHERE login=?;');
 $parametros = array($usuarioDTO->getLogin());
 break;
 }
 $stmt->execute();
 $cont = 0;
 while ($linha = $stmt->fetch()) {
 $dado = new UsuarioDTO();
 $dado->setId($linha[0]);
 $dado->setLogin($linha[1]);
 $dado->setSenha($linha[2]);
 $dado->setTipo($linha[3]);
 $dado->setStatus($linha[4]);
 $dados[$cont] = $dado;
 $cont++;
 }
 
 $stmt = null;
 return $dados;
 } catch (Exception $exc) {
 echo $exc->getMessage();
 return null;
 }
 }
}
?>
Camada CTR
Criação da classe do PHP usuarioCTR, onde serão implementados os métodos de controle de variáveis referentes aos dados dos usuários, a seguir a implementação:
<?php
require_once '../DTO/UsuarioDTO.php';
require_once '../DAO/UsuarioDAO.php';
class UsuarioCTR implements Generica {
 public function modificar($objeto) {
 try {
 $usuarioDAO = new UsuarioDAO();
 return $usuarioDAO->modificar($objeto);
 } catch (Exception $exc) {
 echo $exc->getMessage();
 return false;
 }
 }
 public function pesquisar($objeto) {
 try {
 $usuarioDAO = new usuarioDAO();
 return $usuarioDAO->pesquisar($objeto);
 } catch (Exception $exc) {
 echo $exc->getMessage();
 return null;
 }
 }
}
?>
Camada INT
Na implementação da camada INT, já teremos um novo assunto sendo que nessa camada já iniciaremos o trabalho com Sessões, pois em um caso de login essa camada será responsável por localizar os dados e envia-los para a Sessão, além de no caso de um usuário sair do sistema, ou efetuar o logoff, essa camada será responsável por limpar as sessões.
Sessões 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 à sessão e o restauro de dados da mesma.
Abaixo teremos um arquivo do PHP, o qual será responsável pela Interface da tabela usuário:
<?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(md5($_POST['senha'])));
$usuarioDTO->setTipo($_POST['tipo']);
$usuarioDTO->setStatus($_POST['status']);
if (isset($_POST['cadastrar'])) {
 $usuarioDTO->setOp(1);
 if ($usuarioCTR->modificar($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->modificar($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->modificar($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);
 $dados[] = new usuarioDTO();
 $dados = $usuarioCTR->pesquisar($usuarioDTO);
 $rs = false;
 foreach ($dados as $linha) {
 if($linha!=null){
 if ($linha->getSenha() == $usuarioDTO->getSenha()) {
 $_SESSION['id'] = $linha->getId();
 $_SESSION['login'] = $linha->getLogin();
 $_SESSION['tipo'] = $linha->getTipo();

Continue navegando