paradigmas de linguagens de programação: conceitos de php
DESCRIPTION
Slides apresentando os conceitos da Linguagem de Programação PHP .TRANSCRIPT
![Page 1: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/1.jpg)
Paradigmas de Linguagens de Programação
Linguagem - PHP
André NakamuraAndrey Menezes
Fábio LealJonathan Brilhante
![Page 2: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/2.jpg)
Agenda
•••••••••• Introdução
Valores e TiposArmazenamentoAssociaçõesAbstraçõesUnidades de ProgramaSistemas de TiposSequenciadoresConcorrênciaConclusão
![Page 3: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/3.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Introdução
![Page 4: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/4.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
O que é?
•
•
• "PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML". (php.net)
Linguagem de script paradigma híbrido (Orientado a Objetos + Imperativo).
Desenvolvimento Web.
• Linguagem pertencente à 4ª geração de LP's ("Boom" da Web). Rasmus Lerdof
![Page 5: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/5.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Sintaxe e Semântica
••
•
•
• Sintaxe descrita pelo meta-modelo fornecido pelo projeto "PHP_UML", mantido pela PEAR.
Case sensitive para variáveis.
Case Insensitive para keywords da linguagem.
Semântica Operacional.A Semântica operacional descreve como um programa válido é interpretado como uma sequência de passos computacionais.
![Page 6: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/6.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Processador da Linguagem
•
• Interpretador da linguagem (PHP CGI).
Temos também a opção de ir executando um programa (interpretando comandos) através de um "shell", como na linguagem Python (PHP CLI).
![Page 7: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/7.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
IDE
![Page 8: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/8.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Ambiente de Execução• PHP necessita de um Servidor Web para
disponibilizar suas aplicações online.
![Page 9: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/9.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
...Um pouco mais sobre PHP...
••••
•
• "Enquanto .NET e Java brigam, fazendo muito barulho... PHP se mantém como a tecnologia número 1 da Web." (Felipe Ribeiro)
Linguagem é limitada? Cloud ComputingSaaSSOAWeb Services
Quem Usa?
![Page 10: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/10.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Vamos, então, aos conceitos!
![Page 11: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/11.jpg)
Valores e Tipos
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 12: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/12.jpg)
Valores & Tipos
•••••••
• Valores suportados por PHP: ArraysInteirosReaisObjetosBooleansStringsAbstrações de funções e procedimentos
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
••
• Tipos suportados por PHP:PrimitivosCompostos
![Page 13: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/13.jpg)
Valores
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Abstração de Função
ReaisObjetoArray
Abstrações de funções e procedimentos são valores de segunda classe em PHP.
![Page 14: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/14.jpg)
Tipos Primitivos
•
••
••
• Os tipos primitivos em PHP são:Integer: Representação binária na memóriaFloat: Difere de double apenas no tamanho do intervalo dos reaisDouble: Números Reais.Boolean: Dois valores possíveis, True ou False
Strings são tratados como arrays de caracteres!
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 15: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/15.jpg)
Tipos Compostos• Produto cartesiano: Integer X String
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Valor do tipo Integer
Valor do tipo String
Representação utilizando um objeto com dois atributos distintos.
![Page 16: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/16.jpg)
Tipos Compostos
•
• União disjunta: Pode ser simulada através de uma herança.
Quando tivermos uma instância de Peca, a mesma poderá ser tratada como Peca ou como PecaAbstrata.
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
A classe Peca "guarda um
marcador" de PecaAbstrata, pois herda da mesma.
![Page 17: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/17.jpg)
Tipos Compostos• Mapeamentos podem ocorrer através de Arrays ou de
Funções.
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Mapeamento através de um array bidimensional
Mapeamento através de uma função
![Page 18: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/18.jpg)
Tipos Compostos
•
• Conjunto Potência não ocorre em PHP.
Recursivo: Um exemplo é uma classe com atributo de seu próprio tipo.
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Atributo recursivo é setado para um valor de seu próprio tipo
Representação utilizando uma classe com atributos de seu próprio tipo
![Page 19: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/19.jpg)
Checagem de tipos• PHP é uma linguagem dinamicamente e fracamente tipada,
e sua checagem de tipos também é dinâmica.
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Não é preciso declarar tipos de variáveis, o interpretador tentará realizar qualquer conversão entre tipos, ou como no caso do exemplo acima, recuperar o tipo de uma variável
![Page 20: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/20.jpg)
Equivalência de Tipos
•
• PHP adota a equivalência de nome na checagem de tipos.
A equivalência estrutural de tipos não é suportada
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 21: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/21.jpg)
Princípio da completude de tipo
• PHP viola o princípio da completude de tipo, pois uma construção de um arquivo permanente é limitada. Para lidarmos com arquivos persistentes é necessário que trabalhemos com o tipo "File".
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 22: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/22.jpg)
Armazenamento
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 23: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/23.jpg)
Variáveis e Atualização
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Os valores armazenáveis em PHP são apenas os primitivos (Integer, Float, Double, Boolean).
•
• Variáveis Temporárias: Todas as variáveis exceto as do tipo File.
Variáveis Persistentes: São do tipo "File" em PHP.
Variável do tipo File
![Page 24: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/24.jpg)
Variáveis e Atualização
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Atualização Seletiva é suportada por PHP.
Atualização Seletiva.
![Page 25: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/25.jpg)
Variáveis e Atualização
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Atualização Total ocorre em PHP.
Atualização total
![Page 26: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/26.jpg)
Arrays• Em PHP arrays são do tipo Flexível.
Não definimos nada sobre o array.
O conjunto de índice não é fixo, funciona como uma "lista".
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 27: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/27.jpg)
Semântica de Cópia x Semântica de Referência
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
•
•
• Por default, semântica de cópia pra valores primitivos, os quais já foram apresentados.
Por default, semântica de Referência pra valores compostos, os quais já foram apresentados.
Podemos colocar o caractere & na definição de alguma variável e essa assumirá semântica de referência.
Adotada a semântica de referência para $z.
![Page 28: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/28.jpg)
Variáveis Locais e Globais
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Variáveis Locais
![Page 29: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/29.jpg)
Variáveis Locais e Globais• Variável Global.
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Variáveis Globais
global, indicação do uso das variáveis globais.
Resultado vai ser 3.
![Page 30: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/30.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Variáveis Heap
•
•
• Em PHP temos o New como inicializador de uma variável Heap.
Podemos destruir uma variável com uso do unset().
Apontadores não são suportados por PHP, variáveis Heap são acessadas através de sua referência.
Variável Heap
![Page 31: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/31.jpg)
Tipos de Comandos
••••••• Skip
AtribuiçãoChamada de ProcedimentoComando SequencialComando ColateralComando CondicionalComando Iterativo
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 32: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/32.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Skip • Em PHP um Skip pode ser representado por um simples ";".
O ponto e vírgula representa um skip.
![Page 33: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/33.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Atribuição
•
•
• PHP não dá suporte a atribuições múltiplas nem simultâneas.
PHP só dá suporte a atribuições de um único modo: $var = valor;
É permitida a atribuição com o açúcar sintático "+=".
AçúcarSintático
![Page 34: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/34.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Chamada de ProcedimentosProcedimentoChamada de
procedimento
![Page 35: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/35.jpg)
Comando Sequencial e Colateral
•
• Em PHP os comandos sequenciais são separados pelo " ; " e executados um após o outro.
Em PHP os comandos Colaterais não são suportados. Introdução Valores e Tipos Armazenamento Associações
Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
Comando 1
Comando 2
![Page 36: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/36.jpg)
Comando Condicional
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Uso do comando condicional em PHP.
O if vem seguido de comandos.
![Page 37: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/37.jpg)
Comando Iterativo
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Comando Iterativo Definido Definimos o número de iterações.
• Comando Iterativo Indefinido A iteração dura
enquanto a condição for válida
não se define a quantidade.
![Page 38: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/38.jpg)
Expressões com efeitos colaterais
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Em PHP temos expressões com efeitos colaterais.
Para retornar a expressão correspondente temos que atualizar a variável $linha
como efeito colateral.
![Page 39: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/39.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Associações
![Page 40: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/40.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Estrutura de blocos• Estrutura de blocos aninhados: Característica predominante nas
linguagens mais recentes.
EXEMPLO
1 2 3
![Page 41: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/41.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Escopo
•
•
• Presença de escopo com associação estática em PHP.
O exemplo imprime o valor 2, pois na linha 6 há uma chamada ao escopo global de $var. Se comentássemos essa linha, a saída seria 3.O corpo de um bloco é avaliado no ambiente que foi definido, e não no ambiente do bloco que o chama.
Variável de escopo Global
Função que imprime a $var.Variável de escopo LocalImpressão da variável.
![Page 42: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/42.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Visibilidade • Visibilidade: Três tipos característicos de visibilidade (OO):
Private, Protected e Public.
Atributos Privados da Classe
Att. protegidos (herdáveis) Atributos públicos. (Remove encapsulamento)
![Page 43: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/43.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Visibilidade em blocos• Visibilidade: Se temos uma variável declarada em um escopo mais "interno", essa
variável não estará visível a um bloco de escopo mais externo.
$Peca só será visível das linhas 262 a 266. Se tentarmos acessar essa variável fora de seu escopo, PHP assume valor nulo para ela. (Tipagem)
![Page 44: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/44.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Entidades Associáveis
•
• Em PHP podemos produzir associações através de Constantes, variáveis, procedimentos, Funções e tipos.
Entidades associáveis em PHP: Valores primitivos, valores compostos, abstrações de funções e procedimentos, variáveis, tipos...
"Jogador" estará associado a uma classe, assim como "cor" e "tipo" a variáveis internas da classe. Associamos ainda "play" a um método da classe.
![Page 45: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/45.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Declarações • Declarações em PHP: Definições, Declaração de tipo, de variáveis,
sequenciais e recursivas.
Definição de constantes em PHP.
Declaraçãode um novo tipo
![Page 46: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/46.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Declarações • PHP não dá suporte a declarações colaterais. No entanto, suporta
declarações sequenciais e recursivas.
Declarações sequenciais.
![Page 47: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/47.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Declarações • Declarações Recursivas podem ser obtidas através da declaração de
um Método Recursivo ou Objeto Recursivo.
Procedimento recursivo
Classe com atributo
"recursivo"
![Page 48: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/48.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Comando Bloco• Comandos Bloco são suportados por PHP.
Declarações necessárias paraexecutar o comando.
Método que executará o comando (encapsulado).
![Page 49: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/49.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Expressões Bloco• Expressões Bloco são suportadas por PHP.
Declaração necessária paraavaliar a expressão de
retorno.
Expressão final avaliada.
![Page 50: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/50.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Princípio da Qualificação
•
• PHP não fere o princípio da qualificação, uma vez que podemos realizar qualquer computação, inclusive a simples declaração de uma variável, dentro de um bloco.
Podemos realizar qualquer computação dentro de um bloco.
![Page 51: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/51.jpg)
Abstrações
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 52: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/52.jpg)
Abstração de Função
•
• PHP suporta abstrações de funções.
Quando declarando, usamos da keyword "function" para especificar o corpo e da keyword "return" para especificar o retorno.
Parâmetros Uso de uma abstração de função
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 53: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/53.jpg)
Abstração de Procedimento
•
• PHP suporta abstrações de procedimentos.
É dado de forma similar às abstrações de funções , declarando-se com o uso da keyword "function". A diferença excêncial deve-se ao fato que não deve haver "return".
Uso de uma abstração de procedimento
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 54: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/54.jpg)
Parâmetros
•
• PHP dá suporte a funções de alta ordem.
Passagem de parâmetros por cópia ou referência. Para especificar o uso da referência , usamos "&".
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 55: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/55.jpg)
Parâmetros• Para passagem de parâmetro por cópia, PHP assume a semântica
de cópia valor.
Output
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 56: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/56.jpg)
Ordem de Avaliação• PHP utiliza Eager Evaluation como ordem de avaliação dos
parâmetros nas chamadas de suas abstrações de funções/procedimentos
Alteramos manualmente o arquivo enquanto o programa está em "sleep".Independente da alteração ainda será impresso: " Relatório de PLP! "
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 57: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/57.jpg)
Princípio da Abstração
•
• PHP não viola o princípio da abstração , pois para qualquer trecho de código que realize uma computação , podemos encapsula-lo numa abstração de procedimento sem parâmetros.
Podemos encapsular qualquer construção sintática em abstrações
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 58: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/58.jpg)
Princípio da Correspondência
• PHP não viola o princípio da correspondência, uma vez que existe uma declaração/definição de variável correspondente a cada operação de passagem de parâmetro, seja ela por referência (Constante ou Variável) e por cópia/valor .
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 59: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/59.jpg)
Unidades de Programa
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 60: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/60.jpg)
Pacotes
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
•
• Abstrações de Funções e procedimentos já foram detalhados na seção de Abstrações.
Em PHP não existe nenhuma keyword especifica para pacotes, porém a existência dos mesmos pode ser simulada.
Importando Classes extenas
![Page 61: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/61.jpg)
Tipos abstratos de dados (TAD's)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
•• TAD's podem ser simulados através de Classes de PHP.
Exemplo: Fila. Exemplo de TAD por uma Fila.
![Page 62: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/62.jpg)
Objetos e Classes
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Objetos e classes são peças fundamentais para o conceito de orientação a objetos.
Classe
Construtor
![Page 63: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/63.jpg)
Pacotes
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• Uma curiosidade em PHP é o conceito de namespaces.
criando um namespace
Utilizando namespace
![Page 64: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/64.jpg)
Unidades Genéricas
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
• PHP não dá suporte a unidades genéricas.
![Page 65: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/65.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Sistemas de Tipos
![Page 66: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/66.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Monomorfismo & Chegagem de tipos
•
• PHP não é uma linguagem monomórfica.
Checagem de tipos dinâmica, realizada em tempo de execução.
Não há declaração de tipos.
![Page 67: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/67.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Sobrecarga
•
• PHP não dá suporte à sobrecarga dependente de contexto.
PHP não dá suporte à sobrecarga independente de contexto.
Não há declaração de parâmetros. (Impossível
realizar sobrecarga independente de
contexto). Assim como a dependente de contexto
p/ o tipo de retorno.
![Page 68: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/68.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Sobrecarga• No entanto, pode haver sobrecarga de alguns métodos Built-in.
Método (Built-in) que pode ser sobrecarregado de acordo com os seus parâmetros.
![Page 69: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/69.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Sobrescrita• PHP dá suporte à sobrescrita.
Sobrescrita de método Built-in.
Método Sobrescrito.
Método da classe mãe.
![Page 70: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/70.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Polimorfismo
•
• PHP dá suporte ao polimorfismo paramétrico e por inclusão.
O polimorfismo por inclusão ocorre de maneira semelhante. Os métodos que são válidos para um supertipo também são válidos para seus subtipos.
Exemplo de Polimorfismo Paramétrico.
Método Polimórfico.
![Page 71: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/71.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Coerção
•
• Pelo fato de ser uma linguagem fracamente tipada, a coerção é uma das características marcantes de PHP.
Existe, também, a função settype() para evitar a coerção.
PHP converterá sem necessidade de "cast" explícito.
![Page 72: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/72.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Subtipos & Herança
•
• PHP dá suporte a subtipos e Herança. Classes e Interfaces definem tipos.
Herança simples e implementação de interfaces múltipla.
Def. de tipo por Interface.
Definem novos tipos.
![Page 73: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/73.jpg)
Sequenciadores
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 74: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/74.jpg)
Desvios Incondicionais
•
• PHP suporta desvios incondicionais : Apartir da versão 5.3 . Usando a sintaxe "goto" semelhante a outras linguagens.
Só podemos fazer desvios incondicionais dentro do escopo da abstração de função/procedimento. (Não podemos ir para pontos mais externos do programa).
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Especificação do ponto "Desvio"
Designação do Salto parao ponto "desvio".
![Page 75: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/75.jpg)
Escapes
••
•••
• PHP dá suporte a escapes através de "break" e "return". Existe também a função exit(), que finaliza o script.
"break" : Escape usado para quebrar o condicional switch e a execução de laços.
"return" : Escape usado para saida do escopo de métodos.
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 76: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/76.jpg)
Exceções•
PHP dá suporte a exceções da seguinte forma:Lançar Exceções : " Throw "
"Lançando uma nova exceção que é um Objeto da classe PecaException "
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 77: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/77.jpg)
Exceções
•
• Tratamento de Exceções : "Try/Catch"
"Try : Exceuta um bloco esperando uma exceção" "Catch: Intercepta a exceção especificada e trata "
Criação de Exceções : "extends Exception"
"Para criar um novo tipo de exceção basta criar uma nova classe que herde de Exception"
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 78: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/78.jpg)
Concorrência
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 79: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/79.jpg)
Concorrência• PHP não suporta concorrência nativamente. Foi
desenvolvida uma biblioteca, PCNTL (disponível apenas em ambientes Unix), que simula algumas features de concorrência. Algumass de suas funções são:
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
![Page 80: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/80.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Conclusão
![Page 81: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/81.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Campo Minadohttp://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php
![Page 82: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/82.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Damashttp://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php
![Page 83: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/83.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Links Interessantes
•
•••••• http://php.net/index.php - Site Oficial
http://pear.php.net - Site de Módulos para PHP
http://pear.php.net/package/php_uml - Metamodelo
http://www.zend.com/en - Zend Studio IDE
http://www.apache.org - Apache Server
http://www.xoops.org - XOOPS Server
http://php-pb.net - Lista de discussão de PHP da PB
![Page 84: Paradigmas de Linguagens de Programação: Conceitos de PHP](https://reader036.vdocuments.site/reader036/viewer/2022082310/55894e8fd8b42a63328b46a3/html5/thumbnails/84.jpg)
Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos
Sequenciadores Concorrência Conclusão
Dúvidas?