Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2010, 09:04
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 10 meses
Puntos: 65
Error imprimiendo datos desde una clase con objetos

Hola.

Estoy intentando hacer un ejercicio de clases, funciones y objetos, pero no termino de entender por que en el primer caso no me imprimen los datos que llamo si no pongo los "echo" dentro de la función:

Código PHP:
<?php

class Taxi {
    
    var 
$estado;
    var 
$pasajeros;
    var 
$subir_pasajeros;    
    
    function 
estado($pasajeros=0) { // Esto se ejecutará al instanciar la clase
        
if ($pasajeros<=0){
        
$this->estado "libre <br />";    
        
$this->subir_pasajeros $pasajeros;
    }
    elseif (
$pasajeros>0){
        
$this->estado "ocupado <br />";
        
$this->subir_pasajeros $pasajeros;
        }
    }
    
    function 
subir_pasajeros($pasajeros){
        if (
$pasajeros<=0){        
        
$this->estado "libre <br />";
        
$this->subir_pasajeros $pasajeros;
    }
    elseif (
$pasajeros>0){
        
$this->estado "ocupado <br />";
        
$this->subir_pasajeros $pasajeros;
        }
        
        }
}
$taxi = new Taxi();

echo 
$taxi->estado(); // Mostrará "libre"

$taxi->subir_pasajeros(3); // Suben 3 pasajeros al taxi

echo $taxi->estado(); // Mostrará "ocupado"*/

?>

La manera de imprimirlo tiene que ser así, pero si no pongo los "echo" no imprime nada.


Si los pongo en todos si imprime pero a la vez no le cambia el valor a estado en la segunda función cambiándolo a ocupado:

Código PHP:
<?php

class Taxi {
    
    var 
$estado;
    var 
$pasajeros;
    var 
$subir_pasajeros;    
    
    function 
estado($pasajeros=0) { // Esto se ejecutará al instanciar la clase
        
if ($pasajeros<=0){
        echo  
$this->estado "libre <br />";    
        
$this->subir_pasajeros $pasajeros;
    }
    elseif (
$pasajeros>0){
        echo 
$this->estado "ocupado <br />";
        
$this->subir_pasajeros $pasajeros;
        }
    }
    
    function 
subir_pasajeros($pasajeros){
        if (
$pasajeros<=0){
        echo 
$this->estado "libre <br />";
        
$this->estado "libre <br />";
        
$this->subir_pasajeros $pasajeros;
    }
    elseif (
$pasajeros>0){
        echo 
$this->estado "ocupado <br />";
        
$this->estado "ocupado <br />";
        
$this->subir_pasajeros $pasajeros;
        }
        
        }
}
$taxi = new Taxi();

echo 
$taxi->estado(); // Mostrará "libre"

$taxi->subir_pasajeros(3); // Suben 3 pasajeros al taxi

echo $taxi->estado(); // Mostrará "ocupado"*/

?>
imprime: libre, ocupado y nuevamente libre (que debería de salir ocupado) es decir el último estado a imprimir siempre coge el primero.

¿Estoy haciendo algo mal o me falta algo?