OOP PHP

3 visualizações
Pular para a primeira mensagem não lida

Giovanni - GMAIL

não lida,
21 de dez. de 2007, 14:50:2421/12/2007
para php-b...@googlegroups.com, list...@googlegroups.com
Pessoal,

de repente me "ocorreu" uma situação...rs

tava imaginando aqui e VIAJANDO no seguinte:

class teste{

  private function X(){}

  public function  Y(){}

}

como implementar isso :

$s = new teste();
$s->Y()->X();

// isso que é o overloading ? (é overloading)

mas não gostaria que ficasse disponivel para usar assim

$s = new teste();
$b = $s->Y();
$b->X();

é mais ou menos isso........rs
será que fui claro ?!...rs

mas valeu pessoal, se puderem ajudar...



Ninetails - Carlos Kazuo

não lida,
21 de dez. de 2007, 14:25:5221/12/2007
para php-b...@googlegroups.com
se eu cometer algum erro, me desculpe...
até fiz umas pesquisas no Google mas talvez daqui a pouco alguém
responde algo melhor talvez...
senão, tiro algumas:

...sobre OOP:
não importa: se vc está fora da classe (ou fora de classes do mesmo
'pacote'), não dá pra chamar método privado.


....sobre overload de métodos
overloading não é isso. overload (de métodos) seria por exemplo (em
java, php não sei como ficaria pq dá pra colocar valores-padrão ao
explicitar um método)
class MyClass {
public String funcao1() {
// faz uma coisa
}
public String funcao1(int foo) {
// faz outra coisa
}
public String funcao1(String foo) {
// faz uma terceira coisa
}
}

para um mesmo nome de método vc pode utilizar o método sem passar
parâmetros, passando um int ou passando uma String que ele iria te
redirecionar à função certa dentre as 3.
já em PHP vi que seria algo parecido com utilização de __call(),
__get(), __set()...

...para fazer


$s = new teste();
$b = $s->Y();
$b->X();

vc precisa ter:

class teste2 {
public function X(){}
}

class teste{
public function Y() {
$t2 = new teste2();
return $t2;
}
}

seria vc retornar uma outra instância de um objeto qualquer...
aí vc pode criar sua cadeia...
$t->Y()->X();
seria o mesmo que:
$t2 = $t->Y();
$t2->X();

por aí vai....

e se vc quer retornar X() da seguinte classe:

class teste {
private function X(){}
public function Y(){}
}

já que X é privado, vc poderia botar dentro de Y:
public function Y() {
//blablabla
return $this->X();
}


espero ter ajudado

--
--------------------------------------------------
Carlos Kazuo - Ninetails
ninetai...@gmail.com

Giovanni - GMAIL

não lida,
21 de dez. de 2007, 15:46:3221/12/2007
para php-b...@googlegroups.com
entendi , valeu pela atenção

mas quando me refiro ao metodo privado, seria para usar quando quisesse e não sempre para embutir dentro da função publica....

valeu

Ninetails - Carlos Kazuo escreveu:

Caio Moritz Ronchi

não lida,
21 de dez. de 2007, 15:40:5221/12/2007
para php-b...@googlegroups.com
Olá, Giovanni

Sobre o seu exemplo de código:


$s = new teste();
$s->Y()->X();

// isso que é o overloading ? (é overloading)

Isso se trata, simplesmente, de um encadeamento de chamadas de métodos (introduzido apenas no PHP 5). Overloading, ou sobrecarga, é a idéia de escrever uma classe B que herda de uma classe A e sobrescreve/redefine um ou mais dos métodos da classe pai.
--
Caio Moritz Ronchi
http://blogs.floriparug.org/ronchi

Giovanni - GMAIL

não lida,
21 de dez. de 2007, 16:43:3821/12/2007
para php-b...@googlegroups.com
blz, valeu pela atenção..............

preciso entender melhor estes conceitos...vou pesquisar e contar com a ajuda de vcs...
valeu mesmo

grato,
Giovanni

Caio Moritz Ronchi escreveu:
Responder a todos
Responder ao autor
Encaminhar
0 nova mensagem