SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
Paradigmas de Linguagens de
       Programação
        Linguagem - PHP


         André Nakamura
         Andrey Menezes
            Fábio Leal
        Jonathan Brilhante
Agenda
•   Introdução
•   Valores e Tipos
•   Armazenamento
•   Associações
•   Abstrações
•   Unidades de Programa
•   Sistemas de Tipos
•   Sequenciadores
•   Concorrência
•   Conclusão
Introdução


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
  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.


  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).




  Introdução    Valores e Tipos   Armazenamento     Associações
     Abstrações   Unidades de Programa    Sistemas de Tipos
          Sequenciadores     Concorrência  Conclusão
IDE




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.




 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 Computing
  • SaaS
  • SOA
  • Web Services

                                Quem Usa?



  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!



Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Valores e Tipos


Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Valores & Tipos
• Valores suportados por PHP:              • Tipos suportados por PHP:
  • Arrays                                      • Primitivos
  • Inteiros                                    • Compostos
  • Reais
  • Objetos
  • Booleans
  • Strings
  • Abstraçõ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
Valores
                                            Abstração de Função




                                                        Reais
             Array                     Objeto

    Abstrações de funções e procedimentos são valores de
    segunda classe em PHP.
Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Tipos Primitivos
    • Os tipos primitivos em PHP são:
       • Integer: Representação binária na memória
       • Float: Difere de double apenas no tamanho do
          intervalo dos reais
       • Double: 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
Tipos Compostos
  • Produto cartesiano: Integer X String

                                         Valor do tipo Integer
                                         Valor do tipo String




                                      Representação utilizando um objeto
                                      com dois atributos distintos.

Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Tipos Compostos
• União disjunta: Pode ser simulada através de uma herança.

                                                                   A classe Peca
                                                                    "guarda um
                                                                   marcador" de
                                                                 PecaAbstrata, pois
                                                                 herda da mesma.




• 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
Tipos Compostos
• Mapeamentos podem ocorrer através de Arrays ou de
  Funções.




              Mapeamento através de        Mapeamento através de
                  uma função               um array bidimensional




Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Tipos Compostos
 • Conjunto Potência não ocorre em PHP.

 • Recursivo: Um exemplo é uma classe com atributo de seu
   próprio tipo.
                                              Atributo recursivo é setado para
                                              um valor de seu próprio tipo




                                             Representação utilizando uma classe
                                              com atributos 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
Checagem de tipos
 • PHP é uma linguagem dinamicamente e fracamente tipada,
   e sua checagem de tipos também é dinâmica.




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

Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
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
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
Armazenamento



Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Variáveis e Atualizaçã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




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Variáveis e Atualização
• Atualização Seletiva é suportada por PHP.




                                                       Atualização Seletiva.


 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Variáveis e Atualização

• Atualização Total ocorre em PHP.




                                                 Atualização total




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
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
Semântica de Cópia x Semântica de
                Referência
• 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.


 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Variáveis Locais e Globais


        Variáveis
         Locais




Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Variáveis Locais e Globais
• Variável Global.
                                               Variáveis Globais


                                                       global, indicação do uso
                                                       das variáveis globais.


                                                  Resultado vai ser 3.




 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().
                                                                Variável Heap




• Apontadores não são suportados por PHP, variáveis Heap são
  acessadas através de sua referência.
Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Tipos de Comandos
    •   Skip
    •   Atribuição
    •   Chamada de Procedimento
    •   Comando Sequencial
    •   Comando Colateral
    •   Comando Condicional
    •   Comando Iterativo




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.




 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çúcar
                                           Sintático




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Chamada de Procedimentos
     Chamada de                                        Procedimento
     procedimento




Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Comando Sequencial e Colateral
• Em PHP os comandos sequenciais são separados pelo " ; " e
  executados um após o outro.
                                                            Comando 1

                                                                   Comando 2




• 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 Condicional
• Uso do comando condicional em PHP.

                                                             O if vem seguido
                                                              de comandos.




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Comando IterativoDefinimos o número de
• Comando Iterativo Definido                             iterações.




• Comando Iterativo Indefinido
                                                                    A iteração dura
                                                                      enquanto a
                                                                  condição for válida
                                                                    não se define a
                                                                     quantidade.




  Introdução    Valores e Tipos   Armazenamento     Associações
     Abstrações   Unidades de Programa    Sistemas de Tipos
          Sequenciadores     Concorrência  Conclusão
Expressões com efeitos colaterais
• Em PHP temos expressões com efeitos colaterais.




          Para retornar a expressão correspondente
            temos que atualizar a variável $linha
                    como efeito colateral.



 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Associações


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

  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.
                                                      Variável de escopo Global
                                                       Função que imprime a $var.
                                                       Variável de escopo Local
                                                       Impressão da variável.




• 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.
  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.




                                Att. protegidos (herdáveis)      Atributos públicos.
                                                              (Remove encapsulamento)
Atributos Privados da Classe




   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)


    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.
                                              "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.


•   Entidades associáveis em PHP: Valores primitivos, valores compostos, abstrações
    de funções e procedimentos, variáveis, tipos...




    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ção
                                                                  de um novo tipo




  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.




  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"

  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 para            Método que executará o
      executar o comando.                  comando (encapsulado).



  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 para
                                            Expressão final avaliada.
  avaliar a expressão de
         retorno.



   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.




  Introdução    Valores e Tipos   Armazenamento     Associações
     Abstrações   Unidades de Programa    Sistemas de Tipos
          Sequenciadores     Concorrência  Conclusão
Abstrações


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
• 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
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
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
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
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
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
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
Unidades de Programa



Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Pacotes
• 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




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Tipos abstratos de dados (TAD's)
• TAD's podem ser simulados através de Classes de PHP.
• Exemplo: Fila.
                                                       Exemplo de TAD por uma
                                                      Fila.




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Objetos e Classes
• Objetos e classes são peças fundamentais para o conceito de
  orientação a objetos.

                                          Construtor

Classe




  Introdução    Valores e Tipos   Armazenamento     Associações
     Abstrações   Unidades de Programa    Sistemas de Tipos
          Sequenciadores     Concorrência  Conclusão
Pacotes
• Uma curiosidade em PHP é o conceito de namespaces.


                               criando um namespace




                                                          Utilizando namespace




 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Unidades Genéricas



              • PHP não dá suporte a unidades genéricas.




Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Sistemas de Tipos


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.


                                                   Não há declaração de
                                                          tipos.



• Checagem de tipos dinâmica, realizada em tempo de execução.




  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.




  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.




  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 da
                                                                  classe mãe.

                                                                    Método
                                                                  Sobrescrito.


  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.

                                                               Método
                                                             Polimórfico.



                     Exemplo de Polimorfismo Paramétrico.



• 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.

 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.




                     PHP converterá sem necessidade de
                             "cast" explícito.

• Existe, também, a função settype() para evitar a coerção.

 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.


                                    Definem novos
                                        tipos.



                                                    Def. de tipo por Interface.



• Herança simples e implementação de interfaces múltipla.

 Introdução    Valores e Tipos   Armazenamento     Associações
    Abstrações   Unidades de Programa    Sistemas de Tipos
         Sequenciadores     Concorrência  Conclusão
Sequenciadores


Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Desvios Incondicionais
    • PHP suporta desvios incondicionais : Apartir da versão 5.3 . Usando a
      sintaxe "goto" semelhante a outras linguagens.




      Designação do Salto para                   Especificação do
       o ponto "desvio".                          ponto "Desvio"
• 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
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
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
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
Concorrência


Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
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
Conclusão


Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Campo Minado
         http://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php




Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão
Damas
          http://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php




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

    Introdução    Valores e Tipos   Armazenamento     Associações
       Abstrações   Unidades de Programa    Sistemas de Tipos
            Sequenciadores     Concorrência  Conclusão
Dúvidas?


Introdução    Valores e Tipos   Armazenamento     Associações
   Abstrações   Unidades de Programa    Sistemas de Tipos
        Sequenciadores     Concorrência  Conclusão

Contenu connexe

Tendances

Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
Thiago Poiani
 
A lingua de Eulalia
A lingua de EulaliaA lingua de Eulalia
A lingua de Eulalia
MarinaGLD
 
Slide a lingua de eulalia
Slide a lingua de eulaliaSlide a lingua de eulalia
Slide a lingua de eulalia
IPA Metodista
 

Tendances (20)

Processos PMBOK5 (download p/ visualizar a planilha)
Processos PMBOK5  (download p/ visualizar a planilha)Processos PMBOK5  (download p/ visualizar a planilha)
Processos PMBOK5 (download p/ visualizar a planilha)
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Programação web e o front-end
Programação web e o front-endProgramação web e o front-end
Programação web e o front-end
 
Apresentação php
Apresentação phpApresentação php
Apresentação php
 
Comunicação e interação no aprendizado de línguas estrangeiras: para se compr...
Comunicação e interação no aprendizado de línguas estrangeiras: para se compr...Comunicação e interação no aprendizado de línguas estrangeiras: para se compr...
Comunicação e interação no aprendizado de línguas estrangeiras: para se compr...
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Lógica de Programação - Procedimento
Lógica de Programação - ProcedimentoLógica de Programação - Procedimento
Lógica de Programação - Procedimento
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Libras interlíngua
Libras interlínguaLibras interlíngua
Libras interlíngua
 
A lingua de Eulalia
A lingua de EulaliaA lingua de Eulalia
A lingua de Eulalia
 
linguistica.ppt
linguistica.pptlinguistica.ppt
linguistica.ppt
 
Língua e ensino
Língua e ensinoLíngua e ensino
Língua e ensino
 
Yaml
YamlYaml
Yaml
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 
01 php - introdução ao php
01   php - introdução ao php01   php - introdução ao php
01 php - introdução ao php
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Slide a lingua de eulalia
Slide a lingua de eulaliaSlide a lingua de eulalia
Slide a lingua de eulalia
 

En vedette

En vedette (20)

O YouTube na educação
O YouTube na educaçãoO YouTube na educação
O YouTube na educação
 
Bibliotecas digitais
Bibliotecas digitaisBibliotecas digitais
Bibliotecas digitais
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
 
10 lost historical cities
10 lost historical cities10 lost historical cities
10 lost historical cities
 
Ferramentas web de produção de conteúdos
Ferramentas web de produção de conteúdosFerramentas web de produção de conteúdos
Ferramentas web de produção de conteúdos
 
A BE como Cadinho de Uso das TIC na Aprendizagem
A BE como Cadinho de Uso das TIC na Aprendizagem  A BE como Cadinho de Uso das TIC na Aprendizagem
A BE como Cadinho de Uso das TIC na Aprendizagem
 
O iPad na Sala de Aula
O iPad na Sala de AulaO iPad na Sala de Aula
O iPad na Sala de Aula
 
Recursos educativos digitais
Recursos educativos digitaisRecursos educativos digitais
Recursos educativos digitais
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Jacques-Louis David
Jacques-Louis DavidJacques-Louis David
Jacques-Louis David
 
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesPHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
 
Ensinar e aprender com TIC
Ensinar e aprender com TICEnsinar e aprender com TIC
Ensinar e aprender com TIC
 
Gustave Courbet - «O ateliê do pintor»
 Gustave Courbet - «O ateliê do pintor»   Gustave Courbet - «O ateliê do pintor»
Gustave Courbet - «O ateliê do pintor»
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Arte Urbana [Street Art]
Arte Urbana [Street Art]Arte Urbana [Street Art]
Arte Urbana [Street Art]
 
Caravaggio
CaravaggioCaravaggio
Caravaggio
 
Licenciamento de conteúdos e direitos de autor na Internet
 Licenciamento de conteúdos e direitos de autor na Internet Licenciamento de conteúdos e direitos de autor na Internet
Licenciamento de conteúdos e direitos de autor na Internet
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Ferramentas para criar ebooks
Ferramentas para criar ebooksFerramentas para criar ebooks
Ferramentas para criar ebooks
 
Arquitetura Contemporânea
Arquitetura ContemporâneaArquitetura Contemporânea
Arquitetura Contemporânea
 

Similaire à Paradigmas de Linguagens de Programação: Conceitos de PHP

Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
Jean Lopes
 
Usp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo AntlrUsp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo Antlr
Campus Party Brasil
 
Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao java
Nécio de Lima Veras
 

Similaire à Paradigmas de Linguagens de Programação: Conceitos de PHP (20)

Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da InformaçãoApresentação da Qualificação - Mestrado UFMG Ciência da Informação
Apresentação da Qualificação - Mestrado UFMG Ciência da Informação
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Php
PhpPhp
Php
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Flash ActionScript 3
Flash ActionScript 3Flash ActionScript 3
Flash ActionScript 3
 
Usp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo AntlrUsp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo Antlr
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHP
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de Features
 
Reflections
ReflectionsReflections
Reflections
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Expressões regulares
Expressões regularesExpressões regulares
Expressões regulares
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHP
 
Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao java
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Community Launch 2010 - Novos recursos C# 4.0
Community Launch 2010 - Novos recursos C# 4.0Community Launch 2010 - Novos recursos C# 4.0
Community Launch 2010 - Novos recursos C# 4.0
 

Dernier

Dernier (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Paradigmas de Linguagens de Programação: Conceitos de PHP

  • 1. Paradigmas de Linguagens de Programação Linguagem - PHP André Nakamura Andrey Menezes Fábio Leal Jonathan Brilhante
  • 2. Agenda • Introdução • Valores e Tipos • Armazenamento • Associações • Abstrações • Unidades de Programa • Sistemas de Tipos • Sequenciadores • Concorrência • Conclusão
  • 3. Introdução Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 4. 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 Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 5. 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 6. 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). Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 7. IDE Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 8. Ambiente de Execução • PHP necessita de um Servidor Web para disponibilizar suas aplicações online. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 9. ...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 Computing • SaaS • SOA • Web Services Quem Usa? Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 10. Vamos, então, aos conceitos! Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 11. Valores e Tipos Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 12. Valores & Tipos • Valores suportados por PHP: • Tipos suportados por PHP: • Arrays • Primitivos • Inteiros • Compostos • Reais • Objetos • Booleans • Strings • Abstraçõ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
  • 13. Valores Abstração de Função Reais Array Objeto Abstrações de funções e procedimentos são valores de segunda classe em PHP. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 14. Tipos Primitivos • Os tipos primitivos em PHP são: • Integer: Representação binária na memória • Float: Difere de double apenas no tamanho do intervalo dos reais • Double: 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
  • 15. Tipos Compostos • Produto cartesiano: Integer X String Valor do tipo Integer Valor do tipo String Representação utilizando um objeto com dois atributos distintos. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 16. Tipos Compostos • União disjunta: Pode ser simulada através de uma herança. A classe Peca "guarda um marcador" de PecaAbstrata, pois herda da mesma. • 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
  • 17. Tipos Compostos • Mapeamentos podem ocorrer através de Arrays ou de Funções. Mapeamento através de Mapeamento através de uma função um array bidimensional Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 18. Tipos Compostos • Conjunto Potência não ocorre em PHP. • Recursivo: Um exemplo é uma classe com atributo de seu próprio tipo. Atributo recursivo é setado para um valor de seu próprio tipo Representação utilizando uma classe com atributos 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
  • 19. Checagem de tipos • PHP é uma linguagem dinamicamente e fracamente tipada, e sua checagem de tipos também é dinâmica. 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 Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 20. 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
  • 21. 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
  • 22. Armazenamento Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 23. Variáveis e Atualizaçã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 Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 24. Variáveis e Atualização • Atualização Seletiva é suportada por PHP. Atualização Seletiva. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 25. Variáveis e Atualização • Atualização Total ocorre em PHP. Atualização total Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 26. 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
  • 27. Semântica de Cópia x Semântica de Referência • 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 28. Variáveis Locais e Globais Variáveis Locais Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 29. Variáveis Locais e Globais • Variável Global. Variáveis Globais global, indicação do uso das variáveis globais. Resultado vai ser 3. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 30. Variáveis Heap • Em PHP temos o New como inicializador de uma variável Heap. • Podemos destruir uma variável com uso do unset(). Variável Heap • Apontadores não são suportados por PHP, variáveis Heap são acessadas através de sua referência. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 31. Tipos de Comandos • Skip • Atribuição • Chamada de Procedimento • Comando Sequencial • Comando Colateral • Comando Condicional • Comando Iterativo Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 32. Skip • Em PHP um Skip pode ser representado por um simples ";". O ponto e vírgula representa um skip. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 33. 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çúcar Sintático Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 34. Chamada de Procedimentos Chamada de Procedimento procedimento Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 35. Comando Sequencial e Colateral • Em PHP os comandos sequenciais são separados pelo " ; " e executados um após o outro. Comando 1 Comando 2 • 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
  • 36. Comando Condicional • Uso do comando condicional em PHP. O if vem seguido de comandos. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 37. Comando IterativoDefinimos o número de • Comando Iterativo Definido iterações. • Comando Iterativo Indefinido A iteração dura enquanto a condição for válida não se define a quantidade. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 38. Expressões com efeitos colaterais • Em PHP temos expressões com efeitos colaterais. Para retornar a expressão correspondente temos que atualizar a variável $linha como efeito colateral. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 39. Associações Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 40. Estrutura de blocos • Estrutura de blocos aninhados: Característica predominante nas linguagens mais recentes. EXEMPLO 1 2 3 Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 41. Escopo • Presença de escopo com associação estática em PHP. Variável de escopo Global Função que imprime a $var. Variável de escopo Local Impressão da variável. • 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 42. Visibilidade • Visibilidade: Três tipos característicos de visibilidade (OO): Private, Protected e Public. Att. protegidos (herdáveis) Atributos públicos. (Remove encapsulamento) Atributos Privados da Classe Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 43. 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) Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 44. Entidades Associáveis • Em PHP podemos produzir associações através de Constantes, variáveis, procedimentos, Funções e 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. • Entidades associáveis em PHP: Valores primitivos, valores compostos, abstrações de funções e procedimentos, variáveis, tipos... Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 45. 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ção de um novo tipo Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 46. Declarações • PHP não dá suporte a declarações colaterais. No entanto, suporta declarações sequenciais e recursivas. Declarações sequenciais. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 47. 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" Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 48. Comando Bloco • Comandos Bloco são suportados por PHP. Declarações necessárias para Método que executará o executar o comando. comando (encapsulado). Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 49. Expressões Bloco • Expressões Bloco são suportadas por PHP. Declaração necessária para Expressão final avaliada. avaliar a expressão de retorno. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 50. 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 51. Abstrações Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. 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
  • 57. 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
  • 58. 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
  • 59. Unidades de Programa Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 60. Pacotes • 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 Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 61. Tipos abstratos de dados (TAD's) • TAD's podem ser simulados através de Classes de PHP. • Exemplo: Fila. Exemplo de TAD por uma Fila. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 62. Objetos e Classes • Objetos e classes são peças fundamentais para o conceito de orientação a objetos. Construtor Classe Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 63. Pacotes • Uma curiosidade em PHP é o conceito de namespaces. criando um namespace Utilizando namespace Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 64. Unidades Genéricas • PHP não dá suporte a unidades genéricas. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 65. Sistemas de Tipos Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 66. Monomorfismo & Chegagem de tipos • PHP não é uma linguagem monomórfica. Não há declaração de tipos. • Checagem de tipos dinâmica, realizada em tempo de execução. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 67. 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 68. 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 69. Sobrescrita • PHP dá suporte à sobrescrita. Sobrescrita de método Built-in. Método da classe mãe. Método Sobrescrito. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 70. Polimorfismo • PHP dá suporte ao polimorfismo paramétrico e por inclusão. Método Polimórfico. Exemplo de Polimorfismo Paramétrico. • 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. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 71. Coerção • Pelo fato de ser uma linguagem fracamente tipada, a coerção é uma das características marcantes de PHP. PHP converterá sem necessidade de "cast" explícito. • Existe, também, a função settype() para evitar a coerção. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 72. Subtipos & Herança • PHP dá suporte a subtipos e Herança. Classes e Interfaces definem tipos. Definem novos tipos. Def. de tipo por Interface. • Herança simples e implementação de interfaces múltipla. Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 73. Sequenciadores Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 74. Desvios Incondicionais • PHP suporta desvios incondicionais : Apartir da versão 5.3 . Usando a sintaxe "goto" semelhante a outras linguagens. Designação do Salto para Especificação do o ponto "desvio". ponto "Desvio" • 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
  • 75. 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
  • 76. 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
  • 77. 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
  • 78. Concorrência Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 79. 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
  • 80. Conclusão Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 81. Campo Minado http://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 82. Damas http://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 83. 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 Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão
  • 84. Dúvidas? Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão