Programação Web – #6: Classes
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.
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.
<?php // Exemplo de classe class Viatura { // Variável public $limite_passageiros; // Função public function conduzir() { // Codigo para conduzir } } //Objetos do tipo viatura $carro = new Viatura(); $jipe = new Viatura(); ?> |
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!
Screencast
Se não conseguir ver o vídeo, clique aqui.
Este artigo tem mais de um ano
bom dia, quando é que disponibilizam os videos
Bom dia,
Pois temos que rever internamente este ponto.
Desde do 2º artigo https://pplware.sapo.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
Gostei do tutorial!
Mto bom.
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 😉
Métodos Mágicos ??
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
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!
O mais chato é ter que esperar 1 semana pelo próximo. 🙂
🙂 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)
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.
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!
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 🙂
Respondido, creio que me enganei no sítio.
Happy coding!
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
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;
Obrigado João. Era o “self” que me estava a faltar 😀
Cá estamos à espera de mais episódios 🙂
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.
E quanto ao get e set das propriedades? Não devia ter sido directo como foi feito;
Olá jedi. Pode-me ter escapado algo. Podes explicar melhor sff? Tks!
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
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!