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

obteniendo valores de una clase

Estas en el tema de obteniendo valores de una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, tengo el sigiente caso: <? class moto{ var $arm; function a (){} function b (){} function c (){} } class carro{ var $arm; function ...
  #1 (permalink)  
Antiguo 02/08/2008, 13:06
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Busqueda obteniendo valores de una clase

Hola, tengo el sigiente caso:
<?

class moto{
var $arm;
function a (){}
function b (){}
function c (){}
}


class carro{
var $arm;
function z (){$nc= new moto();}
function r (){}
function w (){}
}





// quiero imprimir la variable pero detrminar si
// mi clase fue instanciada o no

if("si la clase se instancio alguna ves durante el programa"){
$nc->arm="hola";
$nc->a="hola";
}else { echo "no has instannciado la clase en el transcurso del programa<br>";}

?>

quisiera sabe s si puedo determinar si alguna ves la clase se instancio en
medio de las funciones anteriores y si es asi poder recojer las variables
de la clase... es posible?
  #2 (permalink)  
Antiguo 02/08/2008, 13:50
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: obteniendo valores de una clase

Si tu quieres instanciar la clase en otra, debes utilizar HERENCIA. Además una clase hija NO hereda el constructor de la clase padre, por ende deberías probar con:

(PHP5, porque desde esta versión se implementa un real POO [programación orientada a objetos]. En PHP4 no están los niveles de acceso y todas las variables quedaban con var que era un "public" de antaño).

Código PHP:
<?php

Class Moto {
    private 
$arm;
    function 
__construct() {
        
$this->arm "Yo SOY TU PADRE";
    }
    public function 
setArm($arm) { $this->arm $arm; }
    public function 
getArm() { return $this->arm; }

    public function 
a() { }
    public function 
b() { }
    public function 
c() { }
}

// Herencia
Class Carro extends Moto {
    private 
$arm;
    function 
__construct() {
        
// tenemos que llamar al constructor de nuestra clase padre
        // porque como te dije
        
parent::__construct();
        
$this->arm "Yo la clase HIJA :)";
    }
    
    public function 
setArm($arm) { $this->arm $arm; }
    public function 
getArm() { return $this->arm; }

    public function 
(){
        
$nc = new Moto();
        return 
$nc;
        
//return $nc->getArm();
    
}
    public function 
(){}
    public function 
(){}
}



$miClase = new Carro();
echo 
$miClase->z()->getArm()."<br />";
echo 
$miClase->getArm();

?>
Te recomiendo estudies sobre POO, herencia, polimorfismo y todos esos términos relacionados al POO.

Saludos,
goc00
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #3 (permalink)  
Antiguo 02/08/2008, 14:03
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Se puede saber si un objeto fue instanciado??

oye gracias, te comento, ya le he dado algun tiempo a esto e POO, la pregunta mas concreta sera:

Se puede saber si un objeto fue instanciado???
  #4 (permalink)  
Antiguo 02/08/2008, 14:08
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: obteniendo valores de una clase

¿Cómo así?, al momento de construir el objeto ( $objeto = new Clase(); ), ya estás generando una instancia... a lo mejor tu pregunta está orientada hacia al aspecto de saber si ese objeto ha sido utilizado, o de que clase es instancia dicho objeto.... coméntanos un poco más que es eso que necesitas y cual es la funcionalidad que le quieres dar a aquello.

Saludos,
goc00
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #5 (permalink)  
Antiguo 02/08/2008, 14:18
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Respuesta: obteniendo valores de una clase

Cita:
Iniciado por goc00 Ver Mensaje
¿Cómo así?, al momento de construir el objeto ( $objeto = new Clase(); ), ya estás generando una instancia... a lo mejor tu pregunta está orientada hacia al aspecto de saber si ese objeto ha sido utilizado, o de que clase es instancia dicho objeto.... coméntanos un poco más que es eso que necesitas y cual es la funcionalidad que le quieres dar a aquello.

Saludos,
goc00
exacto, lo que pasa es que a media de que pasa mi script llega un momento donde yo devo saber si mi objeto ya se instancio para asi tomar los valores o de lo contrario instanciarlo algo asi como esto

if (" si el objeto ya se instancio"){
// recojo las variables y hago procesos
}else {
/// instancio el objeto
$objeto = new Clase();
/// hago mis procesos
}


demaciadas gracias por la ayuda
  #6 (permalink)  
Antiguo 02/08/2008, 14:24
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: obteniendo valores de una clase

Mmmm, podrías probar algo como:

if($objeto instanceof TuClase) echo "el objeto está instanciado";
else echo "el objeto no está instanciado";

instanceof es para verificar si el objeto es instancia de dicha clase o no, pero insisto, no le veo mucha utilidad a lo que quieres. El objeto lo puedes instanciar con los datos recibidos, y dependiendo si lo vas a utilizar o no, lo utilizas.

Saludos,
goc00
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #7 (permalink)  
Antiguo 02/08/2008, 14:42
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Respuesta: obteniendo valores de una clase

Cita:
Iniciado por goc00 Ver Mensaje
Mmmm, podrías probar algo como:

if($objeto instanceof TuClase) echo "el objeto está instanciado";
else echo "el objeto no está instanciado";

instanceof es para verificar si el objeto es instancia de dicha clase o no, pero insisto, no le veo mucha utilidad a lo que quieres. El objeto lo puedes instanciar con los datos recibidos, y dependiendo si lo vas a utilizar o no, lo utilizas.

Saludos,
goc00
huy si algo asi es, te amplio la info:

Mi problema:

tengo una clase de errores y en esta clase guardo en una variables los reportes de los errores:

class errores{
var error;

function vacia(){
$this->error[1]= "su variavle ta vacia";
}

}


function a($parametos){
// instancio
// paso los parametros por el objeto

}


function b($parametos){
// instancio
// paso los parametros por el objeto

}


// auqi viene lo duro
/*
Por fuerza mayor y devido a que tengo muchas funciones, no puedo estar instanciando la clase funcion por funcion al momento de imprimir los errores, definitivamente devo recoger var error en otra funcion para imprimir el array

*/

foreach (var error ){
// imprimo esa variable que fue renombrada en las funciones anteriores

}



Nota lo que quiero es evitar instanciar la clase funcion tras funcion, el cuento es qu e si no la instancio pues me sale error, para ello devo determinar si se instancio, ps normal, pero si no se instancio pues la instancio


nuevamente muchisimas gracias
  #8 (permalink)  
Antiguo 02/08/2008, 16:25
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: obteniendo valores de una clase

Cita:
Iniciado por nes24 Ver Mensaje
Por fuerza mayor y devido a que tengo muchas funciones, no puedo estar instanciando la clase funcion por funcion al momento de imprimir los errores, definitivamente devo recoger var error en otra funcion para imprimir el array

Nota lo que quiero es evitar instanciar la clase funcion tras funcion, el cuento es qu e si no la instancio pues me sale error, para ello devo determinar si se instancio, ps normal, pero si no se instancio pues la instancio
Haber, parece que tienes un problema de conceptos solamente. Un objeto es la instancia de una clase, hasta acá todo normal... ese objeto al ser instanciado ya posee todos los métodos y atributos si así se definió obviamente. Si instancias ese objeto, no tienes que crear un objeto para poder llamar método por método (una "función" en POO se denomina método).

Código PHP:
// INCORRECTO
$objeto = new Clase();
$objeto->metodo1();
$objeto2 = new Clase();
$objeto2->metodo2(); 
Código PHP:
// CORRECTO
$objeto = new Clase();
$objeto->metodo1();
$objeto->metodo2(); 
Eso es una cosa. Ahora también veo que no has comprendido realmente el concepto de atributo de objeto. Si yo defino como private mi variable, esta es accesible sólo por la clase en la que fue definida y sus métodos, por lo tanto, si deseas acceder al contenido de este debes tener los set y get correspondientes (accesadores y mutadores).

Pusiste:

Código PHP:
function ($parametos){
  
// instancio
  // paso los parametros por el objeto

Pero eso NO es una instancia, eso es un método de una clase que recibe ciertos parametros. Insisto que el ejemplo que te plantée al principio, si lo comprendes en totalidad entenderás que lo que necesitas está respondido o por lo menos la idea general y como debe abordarse está mucho más clara. Saber si un objeto está instanciado no tiene sentido, porque UN OBJETO ES UNA INSTANCIA, es algo así como querer comprobar que el agua está húmeda.

Lo otro que podrías hacer, es disponer una variable de clase con static, esta variable es como te digo, de CLASE, NO de instancia u objeto.

Código PHP:
Class Vehiculo
{
  static private 
$contadorVehiculos 0;
  function 
__construct()
  {
    
Vehiculo::$contadorVehiculos++;
    return 
true;
  }

  static public function 
cuantosVehiculos()
  {
    return 
Vehiculo::$contadorVehiculos;
  }



// te mostrará 0, porque no has creado objetos del tipo Vehículo
echo "Número de vehículos: ".Vehiculo::cuantosVehiculos();

// ahora 1, porque creaste un objeto
$coche = new Vehiculo();
echo 
"<br />Número de vehículos: ".Vehiculo::cuantosVehiculos(); 
Entonces así puedes saber si has creado un objeto o no de dicha clase, bastaría hacer un:

Código PHP:
if(!(Vehiculo::cuantosVehiculos())) echo "No hay objetos creados";
else 
"SI hay objetos"
Saludos,
goc00
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #9 (permalink)  
Antiguo 01/08/2009, 00:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: obteniendo valores de una clase

Goc00....... CAPISIMO!! ...thanks!
  #10 (permalink)  
Antiguo 01/08/2009, 13:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: obteniendo valores de una clase

Tema trasladado desde PHP General.
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 04:36.