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

Popular posts from this blog

GROUP BY Clause and HAVING Clause in PHP

Method Overriding in Traits in PHP

Mysqli database Connection and Display Table Data from Database