Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Clases

Estas en el tema de Clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. La consulta es sencilla, puede PHP instanciar desde una clase diferente a la que instancia? Código PHP: class  prueba1 { var  $prueba ; function  prueba ...
  #1 (permalink)  
Antiguo 28/02/2009, 12:28
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Pregunta Clases

La consulta es sencilla, puede PHP instanciar desde una clase diferente a la que instancia?

Código PHP:

class prueba1{
var 
$prueba;

function 
prueba(){
$this->prueba ""
}

function 
asignarPrueba($arg){
$this->prueba $arg;
}

function 
obtenerPrueba(){
return 
$this->prueba;
}

}

class 
prueba2{

$objeto = new prueba1// Al instanciar prueba en la clase prueba2, tuve problemas, sintaxis?,  o no es la forma correcta de hacerlo?.


  #2 (permalink)  
Antiguo 28/02/2009, 13:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Clases

Tienes que instanciarla en el constructor:
Código php:
Ver original
  1. class prueba2 {
  2.         public function __construct() {
  3.                 $objeto = new prueba1();
  4.         }
  5. }

Saludos
  #3 (permalink)  
Antiguo 28/02/2009, 13:55
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Clases

Es un problema de sintáxis y de estructura. Te habías dejado los paréntesis. Para instanciar un objeto de una clase la sintaxis correcta es la siguiente:
Código PHP:
var objeto = new Clase(); 
Además debes hacerlo dentro de un método.

De poco nos serviría la POO si no se pudiesen crear objetos dentro de otros objetos....

Échale un vistazo al manual para que no tengas problemas con este tipo de cosas tan básicas: php.net/oop
  #4 (permalink)  
Antiguo 28/02/2009, 13:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Clases

@CAT Shannon:

No es necesario los parentesís, son opcionales si el constructor no acepta parámetros.

Saludos
  #5 (permalink)  
Antiguo 28/02/2009, 15:09
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Clases

Tienes razón GatorV. No son necesarios. La fuerza de la costumbre me ha hecho pensar que sí lo eran.
Aún así, y aunque es una opinión personal, creo que debería usarse siempre paréntesis. Al menos a mi me facilitan la comprensión del código.

Un saludo.
  #6 (permalink)  
Antiguo 28/02/2009, 23:48
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Clases

Cita:
Iniciado por CAT Shannon Ver Mensaje
Tienes razón GatorV. No son necesarios. La fuerza de la costumbre me ha hecho pensar que sí lo eran.
Aún así, y aunque es una opinión personal, creo que debería usarse siempre paréntesis. Al menos a mi me facilitan la comprensión del código.

Un saludo.
Estoy de acuerdo con CAT, me da la misma sensación que hacer IF sin llaves
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 28/02/2009, 23:51
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: Clases

No se hasta que punto son tan necesarias, tanto los parentesis como las llaves, que diria el Standar de POO?

Última edición por JairLizcano; 02/03/2009 a las 17:54
  #8 (permalink)  
Antiguo 01/03/2009, 11:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Clases

Los parentesís son necesarios si vas a pasar parámetros (hablando del compilador de PHP), las llaves igual, si vas a tener más de una acción en cada if.

Si hablamos del estandar de Zend, hay que revisarlo, ya que si son necesarios.

Saludos
  #9 (permalink)  
Antiguo 02/03/2009, 17:56
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Exclamación Respuesta: Clases

No se si haya sido problema de CAT Shannon pero no creo sea correcto la forma de instanciar que el menciona:

Código PHP:
var objeto = new Clase(); 
  #10 (permalink)  
Antiguo 03/03/2009, 06:41
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Clases

Pues no, no es correcta. No sé en qué demonios estaría pensando...
Código PHP:
$objeto = new Clase(); 
  #11 (permalink)  
Antiguo 03/03/2009, 10:28
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: Clases

Tengo problemas con la palabra reservada var, pense se asignaba a los diferentes atributos de la clase, igual tambien se podria implementar de la forma que mencionas, pero pense la mejor practica es de la forma que menciono.

Alguna conclusion?.
  #12 (permalink)  
Antiguo 03/03/2009, 10:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Clases

Cita:
Iniciado por GatorV Ver Mensaje
Tienes que instanciarla en el constructor:
Código php:
Ver original
  1. class prueba2 {
  2.         public function __construct() {
  3.                 $objeto = new prueba1();
  4.         }
  5. }

Saludos
Es instancía las cosas dentro de alguna función o dentro del constructor, si lo necesitas como variable de la clase:
Código php:
Ver original
  1. class prueba2 {
  2.      var $objeto;
  3.      public function __construct() {
  4.             $this->objeto = new prueba1();
  5.      }
  6. }

Saludos
  #13 (permalink)  
Antiguo 03/03/2009, 10:53
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: Clases

Osea la idea de utilizar la palabra reservada var, para hacer elocuencia a los atributos de la clase es erroneo?.
  #14 (permalink)  
Antiguo 03/03/2009, 11:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Clases

Pues depende si usas PHP4, no te queda más que usar var, si vas a usar PHP5, tienes que usar un accessor correcto como public, protected, o private.

Saludos
  #15 (permalink)  
Antiguo 03/03/2009, 15:37
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: Clases

Creo lo hacia de manera "arcaica", algo "pasado de moda" el libro de POO, que he leido.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:12.