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

Iniciandome con las clases

Estas en el tema de Iniciandome con las clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, espero me puedan ayudar, estoy intentando meterme en la programacion de clases con PHP y me tope con un problema. Tengo definida una clase, ...
  #1 (permalink)  
Antiguo 11/12/2009, 12:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Iniciandome con las clases

Buenas, espero me puedan ayudar, estoy intentando meterme en la programacion de clases con PHP y me tope con un problema. Tengo definida una clase, creo una instancia en una variable de sesion. para crearla pregunto si esta definida, la primera vez funiona bien, pero si recargo la pagina (no se crea nuevamente la instancia ya que esta creada) no funciona. Abajo dejo el codigo de la clase y la llamada.

Esta es la clase

Código PHP:
Ver original
  1. <?php
  2.  
  3.   class lista {
  4.     //atributos de la clase
  5.     private $num_elementos;
  6.     private $array_codigo;
  7.     private $array_descri;
  8.     private $array_estado;
  9.    
  10.     public $nombre;
  11.    
  12.     //constructor. Realiza las tareas de inicializar los objetos cuando se instancian
  13.     //inicializa el numero de productos a 0
  14.     public function __construct() {
  15.       return true;
  16.     }
  17.    
  18.  
  19.     //seleccionar un producto de la lista.
  20.     public function seleccionar_elemento($vCodigo){
  21.       $orden = $this->en_lista($vCodigo);
  22.       if ($orden <> -1) {
  23.         $array_estado = true;
  24.       }
  25.     }
  26.  
  27.     //elimina un producto de la lista.
  28.     public function elimina_elemento($linea){
  29.       $orden = $this->en_lista($vCodigo);
  30.       if ($orden <> -1) {
  31.         $array_estado = false;
  32.       }
  33.     }
  34.  
  35.     //informa si el elemento xxx se encuentra en el arreglo
  36.     private function en_lista($vCodigo) {
  37.       $resu = -1;
  38.       for ($i=0;$i<$this->num_elementos;$i++){
  39.         if($this->array_codigo[$i] == $vCodigo){
  40.           $resu = $i;
  41.         }
  42.       }
  43.       return $resu;
  44.     }
  45.        
  46.     public function devuelve_lista(){
  47.       echo '<table border=1>';
  48.       echo ' <tr>';
  49.       echo '   <td><b>Mesa</b></td>';
  50.       echo '   <td><b>Consultar</b></td>';
  51.       echo ' </tr>';
  52.       for ($i=0;$i<$this->num_elementos;$i++){
  53.         if($this->array_codigo[$i]!=0){
  54.           echo '<tr>';
  55.           echo '<td>' . $this->array_descri[$i] . '</td>';
  56.           echo '<td>hola</td>';
  57.           echo '</tr>';
  58.         }
  59.       }
  60.       echo '</table>';
  61.     }  
  62.    
  63.     public function hola() {
  64.       return "<p>jejejej</p>";
  65.     }
  66.  
  67.   }
  68.  
  69. ?>

y este el php de donde la invoco

Código PHP:
Ver original
  1. <?php
  2.   include("class/lista.php");
  3.  
  4.   if (!isset($_SESSION["ListaEstadisticaMesa"])){
  5.     $_SESSION["ListaEstadisticaMesa"] = new lista();
  6.   }
  7.  
  8.   $_SESSION["ListaEstadisticaMesa"]->hola();
  9. ?>


desde ya muchas gracias

Última edición por jam1138; 11/12/2009 a las 14:22
  #2 (permalink)  
Antiguo 11/12/2009, 14:32
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: Iniciandome con las clases

Necesitas incluir la definición de la clase ANTES de llamar a session_start() para que puedas persistir un objeto de esa forma.

Saludos.
  #3 (permalink)  
Antiguo 14/12/2009, 06:57
 
Fecha de Ingreso: diciembre-2009
Mensajes: 49
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Iniciandome con las clases

Muchas gracias por tu ayuda, funciono de maravillas.
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 00:09.