..:: MX Studio Fóruns ::..: Entendendo o PHP5 - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Entendendo o PHP5 Orientação a Objeto

#1 User is offline   chackal_sjc 

  • Group: Membros
  • Posts: 260
  • Joined: 09-August 04

  Posted 15 May 2006 - 04:16 PM

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

A principal mudança do PHP5 é a Orientação a Objeto. No PHP5 os engenheiros do Zend: The php company reescreveram toda o modulo de orientação a objetos para melhor performace e mais poder também na linguagem. rolleyes.gif

Aqui vou mostrar a como usar essas novas funcoes 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 alguem ja trabalhou com C++ ou Java, irá notar grande similaridade. Caso não vamos as explicações:

Toda váriavel 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 váriavel 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
<?
/**
* Define MinhaClasse

*/

class MinhaClasse
{
public $public 'Public';
protected $protected 'Protected';
private $private 'Private';


// método public (nao precisa por public)

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

/**
* Define MinhaClasse2
*/
class MinhaClasse2 extends MinhaClasse
{
// Pode-se declarar o public e o protected métodomas não o private

protected $protected 'Protected2';

function 
oi()
{
echo 
$this->public;
echo 
$this->protected;
echo 
$this->private;
}
}

$obj2 = new MinhaClasse2();
echo 
$obj->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, extendida). 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 módo também de acessar algum método/variável de uma classe sem precisar estancia-la. É declarando o método ou variável como static(statica) 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 
?>


Constructor e Descontructor

O método construtor é rodade quando a classe é instanciada. Ele serve para caso você queira que, por padrão quando instanciar 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 {
function 
__construct() {
print 
"Chamou o construtor\n";
}
}
$obj = new BaseClass();
?>


O método constructor também pode conter parametros. Esses parametros são passados quando você controi a classe(instancia ela).

PHP
<?
class BaseClass {
function 
__construct($eu) {
print 
“Chamou o construtor e meu nome é “.$eu.&#092;n”;
}
}
$obj = new BaseClass(”Felipe”);
?>


E o descontructor 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;

function 
__construct() {
print 
"Construindo\n";
$this->nome "ClasseSuicida";
}

function 
__destruct() {
print 
“Destruindo ” $this->nome &#092;n”;
}
}

$obj = new ClasseSuicida(); 
?>


Ae galera… Eu aqui comentei algo sobre a orientação a objeto. É claro que abrange muito mais coisas a orientação a objeto, mas aqui eu sitei o básico e o que vocês tem que aprender para começar a mecher.

Comentem ae e postem dúvidas! Abraços thumbsup.gif

Caso contenha erros no código php, devido a um bug do modulo de php do invision, entre no post que fiz no meu blog https://chackalsjc.wordpress.com/2006/05/15...endendo-o-php5/

This post has been edited by chackal_sjc: 03 August 2006 - 07:24 PM

0

#2 User is offline   Leonardo_C_P_ 

  • Group: Membros
  • Posts: 379
  • Joined: 09-May 06

Posted 15 May 2006 - 06:17 PM

Cara, muito bom mesmo este artigo.


Ótimo para estudos de quem está começando com POO. Muito bom mesmo.


Parábens.


Abraços !
0

#3 User is offline   RafaJaques 

  • Group: Moderadores
  • Posts: 549
  • Joined: 20-December 05

Posted 15 May 2006 - 07:24 PM

Putz..
Parabéns cara.. Matou a pau...

Eu que to com 2 livros de teoria da orientação a objetos aqui em casa, achei indispensável esse artigo!
Muito bom!

=D
0

#4 User is offline   chackal_sjc 

  • Group: Membros
  • Posts: 260
  • Joined: 09-August 04

Posted 15 May 2006 - 08:26 PM

Valeu ae gente!

Eu dei uma editadazinha na parte de constructor pois eu esqueci de colocar um exemplo com o constructor passando algum parametro.
0

#5 User is offline   diegotiko 

  • Group: Membros
  • Posts: 5
  • Joined: 10-May 06

Posted 26 July 2006 - 12:18 AM

eu to ficando louco, ou os 6 exemplos tão iguais ?

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();
?>

0

#6 User is offline   Leonardo_C_P_ 

  • Group: Membros
  • Posts: 379
  • Joined: 09-May 06

Posted 26 July 2006 - 11:51 AM

Sim, todos os exemplos são iguais. o,o


O Chackal ! Cara, você fala alterações nos tutoriais, mas esqueçe de pô-los nos exemplos, mó terrivel isso, conserta aê. XD


Abração !
0

#7 User is offline   diegotiko 

  • Group: Membros
  • Posts: 5
  • Joined: 10-May 06

Posted 26 July 2006 - 03:00 PM

Menos mal... achei que tava com sérios problemas de visão, ainda mais quando vi:

QUOTE
Eu dei uma editadazinha na parte de constructor pois eu esqueci de colocar um exemplo com o constructor passando algum parametro.


hehe
=)
0

#8 User is offline   chackal_sjc 

  • Group: Membros
  • Posts: 260
  • Joined: 09-August 04

Posted 03 August 2006 - 07:15 PM

hehe galera.. mals ae mas isso eh um bug do invision...

na verdade da tag PHP..
ela as vezes acontece isso mesmo.. quando você faz um código e edita ele depois aparece todos iguais... ja aconteceu várias vezes comigo..

no meu blog não tem esse bug hehehe.. comentem

http://chackalsjc.wordpress.com/2006/05/15...endendo-o-php5/
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


Similar Topics Collapse

  Topic Forum Started By Stats Last Post Info
New Replies Fundo flah
fundo e objetos se encaixarem
Flash & ActionScript guildc 
  • 0 Replies
  • 482 Views
Locked Topic Tecla de atalho
colocar o objeto em cima ou em baixo
Illustrator Lopes Apple 
  • 5 Replies
  • 1715 Views
New Replies Mesmo efeito, objeto diferente Flash & ActionScript daniboy 
  • 3 Replies
  • 744 Views
New Replies Sobrepor objeto
menu rollover passar acima de um combo b
Dreamweaver Seifer 
  • 3 Replies
  • 1314 Views
New Replies Objetos no Dreamweaver Dreamweaver fabianosistemas 
  • 0 Replies
  • 443 Views
New Replies desbloquear objetos
desbloquear apenas 1 objeto
Illustrator webruno 
  • 3 Replies
  • 3507 Views
New Replies objeto seguir mouse apenas na horizontal
Please.... como faço isso?
Flash & ActionScript M. Vinícius Brandão 
  • 6 Replies
  • 3108 Views
New Replies Help
Ajuda em objeto
Flash & ActionScript Edherlemann 
  • 2 Replies
  • 364 Views

Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)