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
<?php class Customer { public $id; public $customerNumber; public $name; public function __construct($customerID) { $data['customerNumber'] = 1000000; $data['name'] = 'Jane Johnson'; $this->id = $customerID; $this->name = $data['name']; $this->customerNumber = $data['customerNumber']; } } ?>
class.SweepstakesCustomer.php
Código PHP:
y tengo el test.Ver original
<?php require_once('class.Customers.php'); class SweepstakesCustomer extends Customer { public function __construct($customerID) { parent::__construct($customerID); if($this->customerNumber == 1000000) { print "Congratulations $this->name! You're our millionth customer! <br>" . "You win a year's supply of frozen fish sticks! "; } } } ?>
Código PHP:
Ver original
<?php require_once('class.SweepstakesCustomer.php'); function greetCustomer(Customer $objCust) { print "Welcome back to the store $objCust->name! <br>"; } $promotionCurrentlyRunning = true; if ($promotionCurrentlyRunning) { $objCust = new SweepstakesCustomer(12345); } else { $objCust = new Customer(12345); } greetCustomer($objCust); ?>
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>";
}
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.