Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2011, 22:23
Avatar de Copia
Copia
 
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 15 años, 1 mes
Puntos: 4
duda básica de POO PHP..

Hola, perdon por el titulo pero no se me ocurrió otra.
Supongo que puedo hacer un hilo para preguntar algunas cosas de las cuales tengo duda en mi aprendizaje POO en PHP.

Bien estoy trabajando con herencia y tengo estas clases.

class.customer.php
Código PHP:
Ver original
  1. <?php
  2.      class Customer {
  3.        public $id;
  4.        public $customerNumber;
  5.        public $name;
  6.        public function __construct($customerID) {
  7.        
  8.          $data = array();
  9.          $data['customerNumber'] = 1000000;
  10.          $data['name'] = 'Jane Johnson';
  11.        
  12.          $this->id = $customerID;
  13.          $this->name = $data['name'];
  14.          $this->customerNumber = $data['customerNumber'];
  15.        }
  16.      }
  17.    ?>

class.SweepstakesCustomer.php
Código PHP:
Ver original
  1. <?php
  2.      require_once('class.Customers.php');
  3.      class SweepstakesCustomer extends Customer {      
  4.      
  5.        public function __construct($customerID) {
  6.            parent::__construct($customerID);          
  7.            if($this->customerNumber == 1000000) {
  8.              print "Congratulations $this->name! You're our
  9.                   millionth customer! <br>" .
  10.                    "You win a year's supply of frozen fish sticks! ";
  11.            }
  12.        }
  13.      }
  14.    ?>
y tengo el test.
Código PHP:
Ver original
  1. <?php
  2.      require_once('class.SweepstakesCustomer.php');
  3.      
  4.      function greetCustomer(Customer $objCust) {
  5.        print "Welcome back to the store $objCust->name! <br>";
  6.      }
  7.      
  8.      $promotionCurrentlyRunning = true;
  9.      if ($promotionCurrentlyRunning) {
  10.        $objCust = new SweepstakesCustomer(12345);
  11.      } else {
  12.        $objCust = new Customer(12345);
  13.      }
  14.      greetCustomer($objCust);
  15.    ?>

Estas clases las saque de un libro. Bien entiendo prácticamente todo a excepción de esta función en el archivo de test.
Código PHP:
     function greetCustomer(Customer $objCust) {
       print 
"Welcome back to the store $objCust->name! <br>";
     } 
Mi explicación es que se esta pasando el objeto($objCust) a la función(¿sera un método?) greetCustomer, pero en la definicion de esta funcion esta:
Customer $objCust, supongo que Customer hace referencia a la clase Base Customer?, intente colocando en vez de Customer, SweepstakesCustomer para ver si el test corre con normalidad y así es. Supongo que es por la herencia. Pero si coloco cualquier otro nombre en ves de Customer o SweepstakesCustomer el test no corre.

No se como se llama esto y no entiendo bien el funcionamiento, osea cual es la ventaja. Un saludo y espero me haya dejado entender.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com