Polymorphism in PHP OOPS
<?php
//Polymorphism means many types or many forms
// Polymorphism
spl_autoload_register(function ($class)
{
include "classes/$class.php";
});
function getLogger($type) {
switch($type) {
case "email" :
return new EmailLogger();
break;
case "database" :
return new DBLogger();
break;
case "file" :
return new FileLogger();
break;
}
}
$logger = getLogger("email");
$profile = new UserProfile($logger);
$profile->createUser();
?>
<?php
class DBLogger implements LoggerInterface
{
public function log($message) {
echo "Logging message to DB: $message";
}
}
?>
<?php
class EmailLogger implements LoggerInterface {
public function log($message) {
echo "Logging message to email : $message";
}
}
?>
<?php
class FileLogger implements LoggerInterface {
public function log($message) {
echo "Logging message to file : $message";
}
}
?>
<?php
interface LoggerInterface {
public function log($message);
}
?>
<?php
class UserProfile {
private $logger;
public function createUser() {
echo "Creating User. <br>";
$this->logger->log("User Created.");
}
public function updateUser() {
echo "Updating User. <br>";
$this->logger->log("User Updated.");
}
public function deleteUser() {
echo "Deleting User. <br>";
$this->logger->log("Deleting User.");
}
public function __construct(LoggerInterface $logger) {
$this->logger = $logger;
}
}
// OUTPUT:
//Creating User.
// Logging message to email : User Created.
?>
Comments
Post a Comment