Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/05/2017, 14:22
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consejo en uso de Classes, por favor.

Primero, no se que tan necesario serían esos extends.
Segundo, en tu clase Auto no se puede instanciar clases de ese modo te arrojará error, la correcta forma sería:

Código PHP:
Ver original
  1. class Auto {
  2. public $tanque;
  3. public $motor;
  4.     function Auto(){
  5.     $this->tanque = new TanqueGasolina();
  6.     $this->motor = new Motor();
  7.     }
  8. }

Tercero, de la forma en que estás trabajando te encajonas tu mismo, y claro no queda otra que pasar por parámetro y ver....

Código PSEUDO:
Ver original
  1. encender(gas){
  2.     if(gas > 0){
  3.     encender
  4.     }
  5. }

Entonces:

Código PHP:
Ver original
  1. $auto = new Auto();
  2. $auto->motor->encender($auto->tanque->gasolina);

dejame darle una vuelta....

Por mientras te dejo mi código:

Código PHP:
Ver original
  1. <?php
  2.  
  3. class Auto {
  4. public $tanque;
  5. public $motor;
  6.     function Auto(){
  7.     $this->tanque = new TanqueGasolina();
  8.     $this->motor = new Motor();
  9.     }
  10. }
  11.  
  12. class TanqueGasolina{
  13. public $gasolina = 100;
  14. }
  15.  
  16. class Motor{
  17. public $encendido = "Apagado";
  18.  
  19.     public function encender($gas){
  20.         if($gas > 0){
  21.         $this->encendido = "Encendido";
  22.         return "Encendido!!";
  23.         }
  24.     }
  25. }
  26.  
  27. $auto = new Auto();
  28. echo $auto->motor->encender($auto->tanque->gasolina);
  29.  
  30.  
  31. ?>

Falta encapsulamiento de todas maneras!!! jajaja

Edito, porque lo otro sería usar la funcion encender derechamente en auto:

Código PHP:
Ver original
  1. class Auto {
  2. public $tanque;
  3. public $motor;
  4.     function Auto(){
  5.     $this->tanque = new TanqueGasolina();
  6.     $this->motor = new Motor();
  7.     }
  8.    
  9.     public function encender(){
  10.         if($this->tanque->gasolina > 0){
  11.         $this->motor->encendido = "Prendido";
  12.         }
  13.     }
  14. }

Pero no es la idea cierto?

Última edición por alvaro_trewhela; 06/05/2017 a las 15:05