Respuestas:
De los documentos :
Coalesce igual o ?? = operador es un operador de asignación. Si el parámetro izquierdo es nulo, asigna el valor del parámetro derecho al izquierdo. Si el valor no es nulo, no se hace nada.
Ejemplo:
// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';
Entonces, básicamente es solo una abreviatura para asignar un valor si no se ha asignado antes.
En PHP 7, esto se lanzó originalmente, lo que permite a un desarrollador simplificar una verificación isset () combinada con un operador ternario. Por ejemplo, antes de PHP 7, podríamos tener este código:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Cuando se lanzó PHP 7 , pudimos escribir esto como:
$data['username'] = $data['username'] ?? 'guest';
Ahora, sin embargo, cuando se lanza PHP 7.4 , esto se puede simplificar aún más en:
$data['username'] ??= 'guest';
Un caso en el que esto no funciona es si está buscando asignar un valor a una variable diferente, por lo que no podrá utilizar esta nueva opción. Como tal, aunque esto es bienvenido, puede haber algunos casos de uso limitado.
Documentos de ejemplo :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...