Usando __isset() en PHP 7

El método mágico __isset() se activa al llamar a las construcciones de lenguaje isset() o empty() en propiedades inaccesibles. El método acepta un solo parámetro, según la siguiente sinopsis:

public bool __isset(string $name)

El argumento $name es el nombre de la propiedad con la que se interactúa.
Echemos un vistazo al siguiente ejemplo de contexto de objeto:

<?php
class User
{
private $data = [
'name' => 'John',
'age' => 34,
];
public function __isset($name)
{
if (array_key_exists($name, $this->data)) {
return true;
}
return false;
}
}
$user = new User();
var_dump(isset($user->name));

La clase User define una única propiedad de matriz protegida llamada $data y un método mágico __isset(). El funcionamiento interno del método actual simplemente realiza una búsqueda de nombres contra los nombres de clave del array $data y devuelve verdadero si la clave se encuentra en el conjunto, de lo contrario, es falso. El resultado resultante del ejemplo es bool (verdadero).
La plataforma Magento proporciona un caso de uso interesante y práctico para el método __isset() como parte de su archivo de clase vendor/magento/framework/HTTP/PhpEnvironment/Request.php:

public function __isset($key)
{
switch (true) {
case isset($this->params[$key]):
return true;
case isset($this->queryParams[$key]):
return true;
case isset($this->postParams[$key]):
return true;
case isset($_COOKIE[$key]):
return true;
case isset($this->serverParams[$key]):
return true;
case isset($this->envParams[$key]):
return true;
default:
return false;
}
}

La clase Magento\Framework\HTTP\PhpEnvironment\Request aquí representa el entorno PHP y todos sus datos de solicitud posibles. Los datos de la solicitud pueden provenir de muchas fuentes: una cadena de consulta, $ _GET, $ _POST y otros. El caso del conmutador atraviesa varias de estas variables de datos de origen ($params, $queryParams, $postParams, $serverParams, $envParams, $_COOKIE) para encontrar y confirmar la existencia del parámetro de solicitud.

Comparte