Programação Web – #6: Classes

21 Comentários

Abordadas no tutorial anterior, as funções e funções de utilizador, vamos hoje iniciar a Programação Orientada a Objectos, com as classes.

Como anteriormente, gostaríamos de recordar que, não é possível formar um programador numa questão de vários tutoriais. Estes servem para boa orientação e início de uma busca por parte do leitor. Servirão de base a quem se quer iniciar, não esquecendo que esta rubrica tem como objectivo a introdução da framework Laravel.

clean-coding-best-practices


Classes

Uma classe é uma estrutura definida pelo programador, que poderá conter funções, bem como dados ou variáveis.

 

Objectos

Objectos são instâncias individuais de estruturas, definidas por uma classe. Podemos ter quantas instâncias pretendermos, para a mesma classe.

Fazendo uma abstração mental, podemos pensar na Classe como o Projecto de construção de uma casa. Um Objecto será a casa construída a partir do projecto. Assim, com o mesmo projecto, poderemos fazer tantas casas quanto necessário.


 

Tópicos para hoje:
  • Definição de Classes
  • Propriedades
  • Métodos
  • Parâmetros de inicialização
  • Métodos Mágicos
  • Propriedades e Métodos Estáticos

 

Roadmap para os próximos vídeos:
  • Extensão de Classes, Métodos encadeados
  • Namespaces e Interfaces
  • Consola e linha de comandos
  • Primeira página – HTML – Conteúdo dinâmico
  • Browser Inspector – Ferramentas de Programador
  • Bem-vindo ao Laravel!
  • Site estático clássico 4 páginas, com Templates
  • Bases de Dados
  • CRUD – Create, Read, Update, Delete
  • Desenvolvimento de WebApp, open-source, a definir pelos leitores!

Ficheiros de suporte #6

 

Screencast

Se não conseguir ver o vídeo, clique aqui.

 

Por João Patrício para Pplware.com

Comentários

21

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de ynroot
    ynroot

    bom dia, quando é que disponibilizam os videos

    1. Avatar de João Patrício
      João Patrício

      Bom dia,
      Pois temos que rever internamente este ponto.
      Desde do 2º artigo https://pplware.sitedev.pt/tutoriais/programacao-web-2-hello-world/ que existe o vídeo/screencast.
      Mas nas Aplicação Mobile não dão para ver, tem de ser via website.
      Experimenta e dá feedback, sff.
      Thanks

  2. Avatar de Paulo
    Paulo

    Gostei do tutorial!
    Mto bom.

    1. Avatar de João Patrício
      João Patrício

      Obrigado! Sei que tenho um longo caminho a percorrer.
      Não tenho curso de formador, e é extremamente difícil para mim resumir tudo dentro do tempo disponível/aceitável para um vídeo.
      É sempre agradável ler bom feedback 😉

  3. Avatar de Rui LUX
    Rui LUX

    Métodos Mágicos ??

    1. Avatar de João Patrício
      João Patrício

      Ao minuto 14:55
      São métodos invocados pelo php, ou seja, sem serem explicitamente invocados pelo programador.
      Têm nome reservados, começados por dois underscores.
      Exemplos: __construct() , __destruct(), __get($name)
      http://php.net/manual/en/language.oop5.magic.php

      1. Avatar de Rui LUX
        Rui LUX

        ahh ok.. (desconhecia tal coisa.. nunca escrevi uma única linha de código em php..)
        mas achei curioso.. porque nunca tinha ouvido falar em “métodos mágicos” 😀
        obrigado!

  4. Avatar de Jorge
    Jorge

    O mais chato é ter que esperar 1 semana pelo próximo. 🙂

    1. Avatar de Joao Patrício
      Joao Patrício

      🙂 Obrigado por acompanhares!
      Sei que o ritmo é algo lento, mas dentro do possível… Quem apanhar a séria já com 20 tutorias feitos tem mais que acompanhar sem dúvida 🙂
      Se quiseres tentar ritmar mais a aprendizagem, dá uma passagem em laracasts.com
      São propósitos diferentes. Mas talvez se adeqúe.
      No fim desta rubrica, passarei o testemunho exatamente para o Jeffrey Way 🙂 (laracasts.com)

  5. Avatar de ZiLOG
    ZiLOG

    Estou a gostar destes tutoriais. No entanto gostaria que me tirasses umas dúvidas:
    – Quais as principais diferenças/vantagens/desvantagens entre Laravel, CodeIgniter e Yii?
    – Quais as vantagens entre usar uma Framework PHP ou programar directamente em PHP?

    Faço esta segunda pergunta porque quem já sabe PHP, se usar uma Framework tem que aprender a usá-la e se utilizar o PHP, faz as suas Classes, Métodos, etc que necessita.

    1. Avatar de Joao Patrício
      Joao Patrício

      Obrigado pelo bom feedback!!
      -Em relação à primeira pergunta, prefiro não me alongar, pois não tenho conhecimento profundo das 3. O que destaco no Laravel, será, antes de mais nada o Service Container, tb conhecido por IoC Cointar, com automatic resolution, o ORM Eloquent, as Queues, enfim.. E tanto mais!
      -Sem dúvida nenhuma, usar uma framework é muito mais aconselhado do que programar diretamente.
      Primeiro, não faz sentido re-inventar a roda.
      Segundo, developers que desenvolvem determinada função, por estarem mais especializados ou focados nos componentes que desenvolvem, acredita que vêem com muito mais qualidade e detalhes pensados, do que se formos sozinhos começar do zero.
      Até a usar uma framework, podes customizar a gosto. Afinal de contas, uma framework PHP não é mais que uma construção de ferramentas em PHP.
      Mas isto nunca ninguém está certo nem errado, é tudo caso a caso. Uma aplicação como o Facebook não é a mesma coisa que aquilo que o comum programador tem como projeto.
      Happy coding!

  6. Avatar de Nuno
    Nuno

    Viva, não sei se a secção das dúvidas pode ser aqui nos comentários, mas vou arriscar. Antes de mais obrigado pelos tutoriais, estou a seguir atentamente 🙂

    Estava aqui a brincar com isto e criei uma classe “pessoa” e lá dentro criei uma variavel static. A ideia é nessa variavel ter um contador de quantas vezes a classe tinha sido instanciada. Com isso usei o construct e destruct para somar 1 ou subtrair 1. Não consigo usar o $this para aceder aquela static e por isso fiz assim:

    pessoa::$numerodeinstanciacoes++;

    Alguma maneira de não repetir o “pessoa”? ter algo mais generico?
    Obrigado 🙂

    1. Avatar de Joao Patrício
      Joao Patrício

      Respondido, creio que me enganei no sítio.
      Happy coding!

  7. Avatar de Joao Patrício
    Joao Patrício

    Olá Nuno,
    Obrigado por seguires, e pelos comentários.
    Pode ser um pouco perigoso, pois se fizeres unset e depois instanciares com a mesmo nome de objeto
    Existem as classes de tipologia Factory, que são responsáveis por instanciar classes, dependencias etc
    Mais à frente…

    Para o caso de não ficar bem visível:
    http://sandbox.onlinephpfunctions.com/code/79deeacc604d7b88242de71d0ff440a15401c0ae

    1. Avatar de Joao Patrício
      Joao Patrício

      Pois, o worpress bloqueis as tags, por segurança, my bad 🙂

      class Pessoa
      {
      public static $i = 0;

      public function __construct()
      {
      self::$i++;

      }

      public function __destruct()
      {
      self::$i–;

      }

      }

      $joao = new Pessoa();
      $nuno = new Pessoa();
      $outro = new Pessoa();

      echo Pessoa::$i;

      echo “\n\n”;

      unset($joao);
      $joao = new Pessoa();

      echo Pessoa::$i;

      1. Avatar de Nuno
        Nuno

        Obrigado João. Era o “self” que me estava a faltar 😀
        Cá estamos à espera de mais episódios 🙂

        1. Avatar de Joao Patrício
          Joao Patrício

          De nada Nuno.
          Tb podes usar o static::$i++, dentro da classe.
          A diferença é que o static usa a classe herdada (se estendida), e o self usa aquela onde está a ser invocada.

  8. Avatar de jedi
    jedi

    E quanto ao get e set das propriedades? Não devia ter sido directo como foi feito;

    1. Avatar de João Patrício
      João Patrício

      Olá jedi. Pode-me ter escapado algo. Podes explicar melhor sff? Tks!

  9. Avatar de Mário
    Mário

    Boas,
    Gostaria de fazer uma simples página como esta que tem a pplware, com comentários à notícia. Alguém, conhece um site onde explique isto timtim-por-timtim? De preferência em php+mysql+jscript
    Tenho a noção de como é feita a tabela na base de dados e de como esses dados são gravados, mas representá-los numa página… aqui é que não consigo fazê-lo.
    Obrigado,
    Mário

    1. Avatar de João Patrício
      João Patrício

      Boas,
      Se pretende configurar a arquitetura, nada como Laravel 🙂
      Se prefere atalhar, procure soluções WordPress.
      Existem N recursos pela internet, de ambos.
      Happy coding!