Skip to content


PHP: Entendendo o PHP5

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()
    {
        echo $this->var;
    }
}
$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()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
 
$obj = new MinhaClasse();
echo $obj->public; // Funciona
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$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()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
 
$obj2 = new MinhaClasse2();
echo $obj2->public; // Funciona
echo $obj2->private; // Undefined
echo $obj2->protected; // Fatal Error
$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 static $eu_static = 'foo';
 
   public function valorStatic() 
   {
      return self::$eu_static;
   }
}
 
print Foo::$eu_static; // foo
 
$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) 
    {
        print "Chamou o construtor e meu nome é ".$eu."\n";
    }
}
$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() 
    {
        print "Destruindo " . $this->nome . "\n";
    }
}
 
$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

Posted in PHP, Tutoriais.

Tagged with .


30 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. alfredo says

    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

  2. mrzion says

    Adorei o artigo. Foi muitissimo importante pra mim. Parabéns

  3. Paulino Michelazzo says

    Muito bom artigo. Certamente vai ajudar as pessoas a desmistificar OOP dentro do PHP. Parabéns!

  4. jho says

    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++ ????

  5. lourdes says

    qual a vantagem de utilizar php4 ?

  6. Antonio Nascimento says

    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

  7. Flávio Araújo says

    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

  8. David says

    Muito bom o artigo. Foi claro e objetivo.
    Eu tinha muitas duvidas, e foram esclarecidas.
    Abraço!

  9. Alexandre Alux says

    Cara!!! Você tem o dom de enssinar, muito boa explicação a
    o nevoeiro q tinha na minha frente desapareceu! :)

    Deus abençoe!
    Alux

  10. carlos says

    gostaria de saber como cadastrar um aimgen no bd mysql e exibila unsando o php?.

  11. carlos says

    gostaria de saber como cadastrar um imagens e comentario no bd mysql e exibila unsando o php?.

  12. Nurit Hailey says

    that’s why it will never wor. Nurit Hailey.

  13. Rubens says

    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 !

  14. Felipe Tonello says

    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

  15. David says

    Você sabe como usar as variaveis globais do PHP 5

  16. Felipe Tonello says

    David,
    para usar variáveis globais é só usar o ‘global’ antes de declarar a variável.
    Exemplo:


    function teste()
    {
    global $variavel;
    echo $variavel;
    }

  17. David says

    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

  18. Felipe Tonello says

    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

  19. kayo says

    Mesmo simples, gostei, foi ao ponto.

  20. luan says

    uma pergunta pq o $ não é colocado com vai imprimir a varialvel ..

  21. Felipe Tonello says

    Precisa sim, só que você já usou ela antes no “ponteiro” $this.

  22. Demondark says

    Parabens isso realmente ajuda muito.
    Abraços

  23. Alberto Trindade says

    Artigo Excelente!!
    PArabéns!! .. claro e bem objetivo.

  24. Jaqueline Benedicto says

    Felipe,
    Seu artigo está realmente muito bom!! É uma pincelada onde abranje os princípais tópicos do PHP 5.

  25. MarcelloMtv says

    Muito bom Parabens!!

  26. Carlos says

    estava procurando exatamente esse tipo de explicação> Muito bom mesmo! Parabéns.

  27. Wilson Neto says

    quanto a tutoriais, aqui vai um bom site:

    http://www.w3schools.com

    Não só pra php, vale dar uma olhada

  28. Erick says

    Bom dia fiz o ultmi exemplo da classe suicida e deu o seguinte erro
    Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE in /home/bianor/public_html/ClasseSuicida.php on line 4

Continuing the Discussion

  1. Tiago Floriano Webdesigner » Atualize-se ou sofrerá as conseqüências!! linked to this post on November 2, 2007

    [...] Entendendo o PHP5 [...]

  2. .::William Robert » Blog Archive » PHP: Entendendo o PHP5 Orientado a Objetos. linked to this post on October 8, 2008

    [...] Fonte: FelipeTonello [...]



Some HTML is OK

or, reply to this post via trackback.