Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Operador "->" en metodos (http://www.forosdelweb.com/f68/operador-metodos-291683/)

christiancg2v 23/04/2005 11:41

Operador "->" en metodos
 
Hola a todos.

Soy un programador java que esta iniciando en PHP, asi que, estoy tratando de programar orientado a objetos como lo haria en java, manejando todos los principios de la orientacion a objetos y el estilo de programar en java :serio: . solo que me he estado dando de topes :golpeado: . mi problema es este:

Tengo una clase que contiene otra clase y este a su ves tiene otra.
objeto A contiene un objeto B y objeto B contiene un Objeto C y este a su ves tiene un metodo imprimir():
En java puedo realizar esto: a es un objeto de la clase A;


a.getB().getC().imprimir();

en su version en PHP supuse que seria de esta forma

$a->getB()->getC()->imprimir();

como pueden ver en la version de php, a mi me marca un error

Parse error: parse error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';' in c:\appserv\www\ampi\modules\solicitudes\dominio\lo gicadenegocio\prueba.php on line 42


mi pregunta es ¿Si con el operador "->" puedo hacer algo similar en PHP?;
y si se puede digame como porfiss :neurotico :'( , he estado buscando por todos lados algo que me indique si se puede o no se puede,
por toda su atencion gracias , muchas gracias
:adios:

sism82 24/04/2005 07:35

si como supong el método getB y getC te devuelven un objeto o una referencia a un objeto, tienes que separar las llamadas:

Código PHP:

$b $a->getB();
$c $b->getC();
$c->imprimir(); 

un saludo.
saludos

Webstudio 25/04/2005 07:08

De hecho, la manera correcta de hacerlo en PHP 4.Xm sería :
[PHP]<?php
$b =& $a->getB();
$c =& $b->getC();
$c->imprimir();
?>[PHP]

Aunque si tuvieras ya alguna de las versiones de PHP5 instaladas en tu servidor, puedes hacerlo directamente de la manera que pretendías:

$a->getB()->getC()->imprimir();

Saludos.

Windsurf 14/05/2005 05:41

Yo lo hago de esta manera: Usando claudators.

{{$a->getB()}->getC()}->imprimir();


La zona horaria es GMT -6. Ahora son las 03:30.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.