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

Duda sobre Herencia y Memoria

Estas en el tema de Duda sobre Herencia y Memoria en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Que tal? Tengo esta duda... una pregunta simple que me surge sobre herencia... supongamos que tengo la siguiente clase: Código PHP: class  prototipo  { ...
  #1 (permalink)  
Antiguo 20/05/2009, 10:35
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 20 años
Puntos: 2
Duda sobre Herencia y Memoria

Hola Que tal?


Tengo esta duda... una pregunta simple que me surge sobre herencia... supongamos que tengo la siguiente clase:

Código PHP:
class prototipo {

   public function 
saludar() {
     echo 
"Hola";
  }



Luego tengo tengo esta otra, heredando de "prototipo":

Código PHP:
class saludador extends prototipo {

   protected 
$nombre "";

   public 
__construct($nombre) {
       
$this->nombre $nombre;
   }

   public function 
despedir() {
      exit(
$nombre." se despide. Adios.");
   }


Ahora, si yo tengo 500 instancias de "Saludadores", quiere decir que en memoria voy a estar almacenando toda la informacion del "prototipo" por cada una de las instancias de "saludador" ó solo una?


Bueno es basicamente mi duda... de paso si alguno tiene algo interesante para leer al respecto le agradeceria asi me informo bien por que no estoy encontrando mucho al respecto.

Un saludo!!

Eduardo
  #2 (permalink)  
Antiguo 20/05/2009, 10:41
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 3 meses
Puntos: 48
Respuesta: Duda sobre Herencia y Memoria

Hola Eduardo,

sinceramente desconozco la respuesta a lo que preguntas, ya que la pregunta es bastante técnica y se sale de mis conocimientos.

No se si es vital saber ese dato o solo lo preguntas por curiosidad, pero creo que en circustancias normales y en la mayoría de casos que extiendas tus clases de otras no creo que vaya a provocar que se caiga el sistema.

Saludos!
  #3 (permalink)  
Antiguo 20/05/2009, 10:53
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 20 años
Puntos: 2
Respuesta: Duda sobre Herencia y Memoria

Hola, gracias por la respuesta.

Bueno todo depende de lo que se esté haciendo y lo que se busque. Para mi es vital saberlo por que quiero llevar un control de los recursos que consume lo que hago (eso hace que lo que programe sea eficiente o simplemente eficaz).

No es de maniatico, si estoy haciendo algo sencillo ni me preocupo, pero si tengo una clase en mi framework de la cual heredan muchos objetos puedo terminar consumiendo muchisima memoria cuando tal vez podria hacer de otra forma que no consuma tanta y que todo ande mejor !

Un saludo
  #4 (permalink)  
Antiguo 20/05/2009, 11:43
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 3 meses
Puntos: 56
Respuesta: Duda sobre Herencia y Memoria

Hola, si necesitas saber como va tu consumo de recursos, puedes utilizar esta herramienta:
http://particletree.com/features/php-quick-profiler/

__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #5 (permalink)  
Antiguo 20/05/2009, 12:12
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 20 años
Puntos: 2
Respuesta: Duda sobre Herencia y Memoria

Pareec interesante, gracias por el link !
  #6 (permalink)  
Antiguo 20/05/2009, 12:20
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 3 meses
Puntos: 48
Respuesta: Duda sobre Herencia y Memoria

Si, muy interesante! me recuerda a la consola de Symfony.
  #7 (permalink)  
Antiguo 20/05/2009, 12:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: Duda sobre Herencia y Memoria

quieres saber si en memoria guardas clases dobles? (La clase normal y la heredada?), si esa es tu duda no, el motor de PHP (Zend Engine) guarda un apuntador solamente a la clase ya como dato.

Internamente PHP guarda todas las variables (ya sea un integer, string, objecto, resource) en un objeto que mantiene un apuntador a todas las variables, es por eso que puedes tratar una variable como diferentes tipos sin atarte a uno solo.

Cuando tu creas las 500 instancias, PHP guarda las propiedades, publicas, privadas, y protegidas del objeto en este objeto interno, y guarda un apuntador a que tipo de objeto pertenece, por lo que ocupa en teoria lo mismo que si guardaras 500 strings con los mismos datos.

Espero esto solucione tu duda.

Saludos
  #8 (permalink)  
Antiguo 21/05/2009, 08:26
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 20 años
Puntos: 2
Respuesta: Duda sobre Herencia y Memoria

Gracias GatorV, siempre con la información justa!! :D

Es exactamente a lo que me referia, ahora, lo que me pregunto es a donde puedo encontrar información sobre como funciona internamente todo en PHP como la que me acabas de dar... tendria que revisarme todo PHP.NET ahi en teoria esta todo verdad?

Un saludo y gracais nuevamente!

Eduardo
  #9 (permalink)  
Antiguo 21/05/2009, 08:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: Duda sobre Herencia y Memoria

Pues sí en php.net hay mucha información, pero encuentras más información si buscas como programar extensiones para PHP, estas se hacen en C, o C++, y en Zend.com hay mucha información de como trabaja Zend Engine 2 (el Core de PHP5).

Saludos.
  #10 (permalink)  
Antiguo 18/06/2009, 10:03
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Duda sobre Herencia y Memoria

Puedes hacer las pruebas pertinentes para responder a tu pregunta:
Esta linea te devuelve el uso total de memoria;

memory_get_usage(true);

Un saludo
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 02:48.