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<?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:
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! ";
}
}
}
?>
y tengo el test.
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>";
}
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.