PHP: Entendendo o PHP5
Ajude a Combater o Spam! Clique aqui!
Mesmo o PHP5 sendo lançado a um bom tempo já, e também ja sabemos que irá lançar o PHP6, muitas pessoas não sabem realmente a principal diferença entre o PHP5 e o PHP4(ou anteriores). Com esse artigo eu irei mostrar as principais mudanças.
A principal mudança do PHP5 é a Orientação a Objetos. No PHP5 os engenheiros do Zend reescreveram toda o modulo de orientação a objetos para melhor performance e mais poder também na linguagem.
Aqui vou mostrar a como usar essas novas funções e como aplica-las(vou ser bem objetivo, sem balblalb).
Uma classe no PHP funciona assim:
-
<?php
-
class ClasseExemplo
-
{
-
// declaração da variável
-
public $var = ‘Olá Mundo’;
-
// declaração do método
-
public function exibeVar()
-
{
-
}
-
}
-
$classe = new ClasseExemplo();
-
$classe->exibeVar();
-
?>
Essa é uma classe exemplo onde que podemos notar algumas regras:
- Declação de varivel da classe(que poderá usar em vários metodos da mesma classe)
- Declaração do método
- Declarar a prioridade de acesso do método e da variável
- Para chamar a classe você usa sintaxe $variavel = new NomeClasse();
Caso alguém já trabalhou com C++ ou Java, irá notar grande similaridade. Caso não, vamos as explicações:
Toda variável que será usada em diversos métodos(global) tem que ser declarada na classe e não no método. O método na verdade é mesma coisa que a função, mas por questão de nomenclatura a função dentro de uma classe se chama método.
Toda variável global ou método tem que ter uma prioridade(visibilidade). O que é isto?
Essa prioridade é quem vai mostrar para a classe se outra classe, ou se outros métodos ou se fora da classe você poderá chamar ela. Isso vale tanto pra métodos ou variáveis. Mas como assim?
Vou mostrar os tipos de prioridades que temos e assim os exemplos para vocês entenderem melhor. A visibilidade se aplica tanto para métodos quanto para variáveis.
Visibilidade e Classes Filhas
Existem 3 tipos: Public(publico), Protected(protegida), Private(privada).
Public - Publico. Você pode acessa-la dentro e fora da classe. Mais comum entre os métodos
Protected - Você pode acessa-la somente na Classe ou em suas classes filhas. Não tao comum.
Private - Você pode acessar somente dentro da classe. Mais comum nas variáveis.
Exemplo:
-
<?php
-
class MinhaClasse
-
{
-
public $public = ‘Public’;
-
protected $protected = ‘Protected’;
-
private $private = ‘Private’;
-
-
// método public (nao precisa por public, mas é recomendável)
-
function oi()
-
{
-
}
-
}
-
-
$obj = new MinhaClasse();
-
$obj->oi(); // Exibe Public, Protected e Private
-
-
-
class MinhaClasse2 extends MinhaClasse
-
{
-
// Pode-se declarar o public e o protected métodomas não o private
-
protected $protected = ‘Protected2′;
-
public function oi()
-
{
-
}
-
}
-
-
$obj2 = new MinhaClasse2();
-
$obj2->oi(); // Exibe Public, Protected2, não Private
-
?>
Nesse exemplo está mais claro de entender como funciona a visibilidade do PHP. Mas pode ter certeza que nunca é tão complicado, sempre é bem simples, as variáveis normalmente são private e os métodos public.
E notamos também alí a classe filha(parente, estendida). Ela é uma classe que pertence a classe mãe, no caso a MinhaClasse, e os métodos protected funcionam nela também.
Static
Existe um modo também de acessar algum método/variável de uma classe sem precisar instância-la. É declarando o método ou variável como static(estática) ou se for uma constante também.
Exemplo:
-
<?php
-
class Foo
-
{
-
-
public function valorStatic()
-
{
-
return self::$eu_static;
-
}
-
}
-
-
-
$obj = new Foo();
-
$obj->valorStatic(); // foo
-
?>
Construtor e Destrutor
O método construtor é rodado quando a classe é instânciada. Ele serve para caso você queira que, por padrão quando instânciar a classe, ela faça algo já automático. Se em sua classe não contenha o método construtor o PHP irá procurar pelo nome de um método igual ao nome da classe, como é feito em Java por exemplo.
Sintaxe: void __construct ([void])
Exemplo:
-
<?php
-
class BaseClass
-
{
-
public function __construct()
-
{
-
print "Chamou o construtor\n";
-
}
-
}
-
$obj = new BaseClass();
-
?>
O método construtor também pode conter parâmetros. Esses parâmetros são passados quando você constrói a classe(instância ela).
-
<?php
-
class BaseClass
-
{
-
public function __construct($eu)
-
{
-
}
-
}
-
$obj = new BaseClass("Felipe");
-
?>
E o destrutivo faz exatamente o contrario. Ele é rodado quando a classe é fechada ou quando todos as referencias de um objeto particular for removido.
-
<?php
-
class ClasseSuicida
-
{
-
private nome;
-
-
public function __construct()
-
{
-
print "Construindo\n";
-
$this->nome = "ClasseSuicida";
-
}
-
-
public function __destruct()
-
{
-
}
-
}
-
-
$obj = new ClasseSuicida();
-
?>
Aê galera… Eu aqui comentei algo sobre a orientação a objeto. É claro que abrange muito mais coisas mas aqui eu citei o básico e o que vocês tem que aprender para começar a mexer com isso.
Comentem aê e postem dúvidas! Abraços

em September 18th, 2006 às 8:13 am
boa explicação agradecia que me arranja-se algum local onde poderei arranjar tutoriais ou apostilas de php5 orientado a objectos, ou me envia-se para o mail os respectivos files
em October 16th, 2006 às 9:30 am
Adorei o artigo. Foi muitissimo importante pra mim. Parabéns
em November 12th, 2006 às 7:15 pm
Muito bom artigo. Certamente vai ajudar as pessoas a desmistificar OOP dentro do PHP. Parabéns!
em December 7th, 2006 às 8:38 am
Como faço pra fazer um arquivo só com os readers e um outro só com a implementação, tipo o .h e o .cpp do c++ ????
em December 18th, 2006 às 3:12 pm
qual a vantagem de utilizar php4 ?
em December 28th, 2006 às 11:44 am
Tutorial interessante para iniciantes, mas se vc quiser algo bem mais completo esse é o melhor tutorial de php 5 que encontrei
http://www.fop.unicamp.br/informatica/index.php?option=com_docman&task=doc_view&gid=3&Itemid=36
em January 31st, 2007 às 12:59 am
Fala Felipe, td blz ???
Entao, o email que vc me passou do directnet nao ta funfando, ele voltou …
Qual é o seu do msn?
Abraço
em March 22nd, 2007 às 3:40 pm
Usando
Mozilla Firefox 2.0.0.2 no
Ubuntu Linux
Muito bom o artigo. Foi claro e objetivo.
Eu tinha muitas duvidas, e foram esclarecidas.
Abraço!
em May 30th, 2007 às 4:08 am
Usando
Mozilla Firefox 2.0 no
Windows XP
Cara!!! Você tem o dom de enssinar, muito boa explicação a
o nevoeiro q tinha na minha frente desapareceu!
Deus abençoe!
Alux
em August 20th, 2007 às 12:38 pm
Usando
Internet Explorer 6.0 no
Windows XP
gostaria de saber como cadastrar um aimgen no bd mysql e exibila unsando o php?.
em August 20th, 2007 às 12:42 pm
Usando
Internet Explorer 6.0 no
Windows XP
gostaria de saber como cadastrar um imagens e comentario no bd mysql e exibila unsando o php?.
em September 19th, 2007 às 2:20 pm
Usando Unknown browser
that’s why it will never wor. Nurit Hailey.
em October 2nd, 2007 às 11:49 pm
Usando
Mozilla Firefox 2.0.0.7 no
Windows XP
Felipe parabens por esse exemplicação de OO no PHP, muito boa gostei, estava dando uma olhada por cima no teu blog gostei nos temas que você aborda (programação para WEB). Se estiver afim de conversar pegue meu msn rubensgarcia474@hotmail.com. A antes de me esquecer eu queria agradecer sua visita ao meu blog e a indicação do artigo ao delicious !
em October 4th, 2007 às 2:14 pm
Usando
Mozilla Firefox 2.0.0.6 no
Linux
Olá Rubens,
Obrigado você pelo comentário. E continue ativo na comunidade!
Sempre que der, passe por aqui, ou assine meu feed para ficar por dentro das últimas =P
Abraços
em October 15th, 2007 às 8:48 pm
Usando
Mozilla Firefox 2.0.0.7 no
Windows XP
Você sabe como usar as variaveis globais do PHP 5
em November 2nd, 2007 às 10:29 am
Usando
WordPress 2.1.3
[...] Entendendo o PHP5 [...]
em November 20th, 2007 às 9:45 pm
Usando
Mozilla Firefox 2.0.0.8 no
Linux
David,
para usar variáveis globais é só usar o ‘global’ antes de declarar a variável.
Exemplo:
function teste()
{
global $variavel;
echo $variavel;
}
em December 28th, 2007 às 7:14 pm
Usando
Internet Explorer 7.0 no
Windows XP
ja percebi q vc entende muito de PHP e tenho um problema q se possivel gostaria q vc me ajudasse a resolver: estou fazendo um script onde estou usando IF e preciso colocar 2 condições no IF exemplo: IF(a==b, c>a){…
mas quando faço isso da um erro e diz q é justamente na linha desse IF.
ja andei perguntando a alguns programadores em PHP e eles disseram q isso é possivel mas ai quando vi q ñ tava dando certo penssei q poderia ser a versão do PHP, eu estou usando a 4.3.10 será q esse tipo de IF so pode ser usado na versão 5 do PHP? se vc souber por favor me responda, qualquer coisa ai vai meu e-mail se vc quiser mando meu código pra vc analisar: davidmkt@gmail.com
ficarei muito grato pela sua ajuda!!
aguardo resposta mas desde já obg!!
David Lima
em December 29th, 2007 às 1:09 pm
Usando
Mozilla Firefox 2.0.0.11 no
Windows XP
David,
Claro que pode, e quantas vezes você quiser. É só usar o operador && ou a palavra reservada and.
Mas eu recomendo usar o && por questão de semântica.
Exemplo:
if(a == b && c > a)Abraços,
Felipe Tonello
em February 21st, 2008 às 12:47 am
Usando
Safari 523.12 no
Mac OS X
Mesmo simples, gostei, foi ao ponto.
em July 21st, 2008 às 7:22 pm
Usando
Internet Explorer 6.0 no
Windows XP
uma pergunta pq o $ não é colocado com vai imprimir a varialvel ..
em July 22nd, 2008 às 11:01 am
Usando
Mozilla Firefox 3.0.1 no
Windows XP
Precisa sim, só que você já usou ela antes no “ponteiro” $this.
em October 8th, 2008 às 4:53 pm
Usando
WordPress 2.6.2
[...] Fonte: FelipeTonello [...]
em October 11th, 2008 às 1:05 am
Usando
Mozilla Firefox 3.0.3 no
Windows XP
Parabens isso realmente ajuda muito.
Abraços