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.
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();
?>
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
?>
/**
* 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
?>
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();
?>
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.”\n”;
}
}
$obj = new BaseClass(”Felipe”);
?>
class BaseClass {
function __construct($eu) {
print “Chamou o construtor e meu nome é “.$eu.”\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 . “\n”;
}
}
$obj = new ClasseSuicida();
?>
class ClasseSuicida {
private nome;
function __construct() {
print "Construindo\n";
$this->nome = "ClasseSuicida";
}
function __destruct() {
print “Destruindo ” . $this->nome . “\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
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

Help














