Saturday, May 08, 2021

Proxy pattern php

Create interface Subject add code:
public function request(): void;
create class RealSubject implements Subject implement missing method repace TODO with
echo "RealSubject: Handling request.<br/>";
create Proxy and have it implements Subject and add code to request function: The most common applications of the Proxy pattern are lazy loading, caching, controlling the access, logging, etc. A Proxy can perform one of these things and then, depending on the result, pass it to the execution to the same method in a linked RealSubject object.
if ($this->checkAccess()) {
    $this->realSubject->request();
    $this->logAccess();
}
The Proxy maintains a reference to the object of the RealSubject class. It can be either lazy-loaded or passed to the Proxy by the client. We then add code
private $realSubject;

public function __construct(RealSubject $realSubject)
{
    $this->realSubject = $realSubject;
}
at the bottom we add:
private function checkAccess(): bool
{
    // Some real checks should go here.
    echo "Proxy: Checking access prior to firing a real request.<br/>";
     return true;
}

private function logAccess(): void
{
    echo "Proxy: Logging the time of request.<br/>";
}
last step is to go to index and add the following includes
include_once ('Subject.php');
include_once ('RealSubject.php');
include_once ('Proxy.php');
we also add the function
function clientCode(Subject $subject)
{
    // ...
    $subject->request();
    // ...
}
and to run our demo we add:
echo "Client: Executing the client code with a real subject:<br/>";
$realSubject = new RealSubject;
clientCode($realSubject);

echo "<br/>";

echo "Client: Executing the same client code with a proxy:<br/>";
$proxy = new Proxy($realSubject);
clientCode($proxy);
**RUN**
Client: Executing the client code with a real subject:
RealSubject: Handling request.

Client: Executing the same client code with a proxy:
Proxy: Checking access prior to firing a real request.
RealSubject: Handling request.
Proxy: Logging the time of request.

The Ray Code is AWESOME!!!
wikipedia

Find Ray on:

facebook
youtube
The Ray Code
Ray Andrade

The Strategy Design Pattern a Behavioral Pattern using C++

The Strategy Design Pattern is a behavioral design pattern that enables selecting an algorithm's implementation at runtime. Instead of i...