:: novos artigos ::
|
|
|
:: novos scripts ::
|
|
|
|
|
Classes e Objetos (PHP5) - Visibilidade, Construtores e Destrutores
por John Marques
|
Neste artigo ensino o que é e como funciona a visibilidade, os construtores e destrutores dentro de promação orientada à objetos no PHP5.
|
|
|
Então tá agora que sabemos dos conceitos vamos para o código.
<?php
class operacoes
{
// Membros
// aqui declaramos os tipos dos membros
public $v1;
public $v2;
protected $res;
/*
Construtor:
Nele setamos os valores dos membros de $v1 e $v2
*/
function __construct()
{
$this->setV1(10);
$this->setV2(3);
}
//Destrutor
function __destruct()
{
echo "eu sou um destrutor";
}
//Um método
public function soma()
{
return $this->res = $this->v1 + $this->v2;
}
/*
Observe que na função subtração eu não uso a palavra-chave
public, pois o PHP5 entende que qualquer método que não
seja setado sua visibilidade terá como visão total ou seja
será "public", então tanto faz colocarmos public ou não
colocar nada na frente de um método que vai dar na mesma,
ja no caso do protected e private é necessário que seja setado.
*/
function subtracao()
{
return $this->res = $this->v1 - $this->v2;
}
protected function multiplicacao()
{
return $this->res = $this->v1 * $this->v2;
}
protected function divisao()
{
return $this->res = $this->v1 / $this->v2;
}
// Privamos o método para o uso somente da classe operacoes.
private function modulo()
{
return $this->res = $this->v1 % $this->v2;
}
public function ret_modulo()
{
return $this->modulo();
}
public function setV1($valor)
{
$this->v1 = $valor;
}
public function setV2($valor)
{
$this->v2 = $valor;
}
public function getV1()
{
return $this->v1;
}
public function getV2()
{
return $this->v2;
}
}
?>
|
Crie duas classes para explicar a visibilidade dos métodos pois se fosse somente explicado a visiblidade dos membros, era necessário somente a classe operacoes.
<?php
class exec_op extends operacoes
{
//determino o membro como privado
private $r;
function __construct()
{
//o comando abaixo determina que o construtor da classe
//pai deve ser usado
parent::__construct();
}
function __destruct()
{
//Da mesma forma que no construtor desta classe..
//o destrutor do pai deve ser usado
parent::__destruct();
}
public function print_soma($v1 = "", $v2 = "")
{
if ($v1 != "") {
$this->setV1($v1);
}
if ($v2 != "") {
$this->setV2($v2);
}
$this->r = $this->soma();
$this->imp();
}
public function print_modulo($v1 = "", $v2 = "")
{
if ($v1 != "") {
$this->setV1($v1);
}
if ($v2 != "") {
$this->setV2($v2);
}
$this->r = $this->ret_modulo();
$this->imp();
}
public function imp()
{
echo $this->r."<br>";
}
}
$exec = new exec_op();
// Retornará 13
$exec->print_soma();
//Retornará 1
$exec->print_modulo();
// Gera um erro "Fatal error: Call to private method
// operacoes::modulo() from context '' in operacoes.php on line xx"
echo $exec->modulo();
// Gera um erro "Fatal error: Call to protected method
// operacoes::divisao() from context '' in operacoes.class.php on line xx"
echo $exec->divisao();
// Retornará 7
echo $exec->subtracao();
// Gera um erro "Fatal error: Call to protected method
// operacoes::multiplicacao() from context '' in operacoes.class.php on line 122
echo $exec->multiplicacao();
?>
|
Galera muito obrigado. Tomara que eu tenha ajudado, eu acredito que este artigo serve para ajudar aqueles que estão iniciando em OOP no PHP5.
Abraço a todos,
John Marques
Imprimir |
Enviar para um Amigo
|
Comentários de Usuários
Legal
Método de explicar bem simples e fácil de aprender. Valeu.
Re: Legal
Q bom q gostou Hunter..
estou preparando o próximo artigo.. para dar continuidade.. nas Classes e Objetos..
valeu
Show
Rapaiz, como eu gosto de OO devo te dar os parabéns pelo artigo, didático e bom.
Muito bom...
Legal seu artigo... to esperando continuaçoes... :)
to me adaptando para trabalhar com classes agora, e to aprendendo ainda, quanto a manipulaçoes e tal... muito bons esses artigos exemplificando... vlw
|
|