El patrón Proxy en PHP es sencillo de entender, es utilizado como intermediario para acceder a un objeto llamado SujetoReal.
Básicamente, tenemos un objeto Proxy que actúa como un sustituto de un objeto SujetoReal. Se realiza una solicitud al Proxy y éste es el encargado de transmitirla a SujetoReal
El objeto Proxy posee una referencia al objeto SujetoReal y controla el acceso a sus métodos y propiedades, introduciendo las funcionalidades que cree necesarias.
Posibles tipos de Proxies
- Proxy Remoto: Cuando el objeto proxy está en una dirección y el objeto real está en otra. En este caso proxy puede funcionar como corta fuegos (firewall). Es muy común ver este esquema con los juegos en línea donde se necesita el mismo objeto en diferentes lugares al mismo tiempo.
- Proxy Virtual: Puede almacenar en caché información, de modo que el acceso al objeto real puede ser postergada
- Proxy de protección: Mantiene la protección de la solicitud al objeto real hasta que la solicitud es verificada por el servidor proxy de protección
Veamos un ejemplo sencillo
<?php abstract class ISujeto{ abstract protected function request(); } class Proxy extends ISujeto{ private $SujetoReal; public function request(){ echo "agregando funciona al inicio <br />"; $this->SujetoReal = new SujetoReal(); $this->SujetoReal->request(); echo "agregando funciona al final <br />"; } } class SujetoReal extends ISujeto{ protected function request(){ echo "Ejecutando request en " . get_class() . "<br />"; } } //implementacion class Usuarios{ private $proxy; public function __construct(){ $this->proxy = new Proxy(); } public function hacerX(){ $this->proxy->request(); } } $objeto = new Usuarios; $objeto->hacerX(); ?>
Resultado
agregando funciona al inicio Ejecutando request en SujetoReal agregando funciona al final
Como podemos ver, agregamos un mensaje al inicio y uno al final de la llamada al SujetoReal.
Esto es una introducción al patrón Proxy y el ejemplo intenta demostrar fácilmente una estructura del patrón y una implementación. En proyectos grandes es un común ver este tipo de esquemas.