php - remove - strip_tags wordpress
Tipos de retorno mĂșltiples php 7 (3)
A partir de ahora, la forma compatible es que los dos objetos compartan una interfaz. Ejemplo:
interface ReturnInterface {}
class FailObject implements ReturnInterface {}
class SuccessObject implements ReturnInterface {}
function test(): ReturnInterface {}
En este ejemplo, ReturnInterface
está vacío. Su mera presencia apoya la necesaria declaración de tipo de retorno.
Advertencia :
Los siguientes RFC discutidos (tipos de unión) han sido rechazados
https://wiki.php.net/rfc/union_types
Hay una discusión activa y activa sobre los tipos de unión con varios RFC competidores. Si cualquiera de estos pasa, entonces una firma propuesta sería:
function test(): FailObject|SuccessObject {}
Dicho esto, prefiero el enfoque de interfaz independientemente de los tipos de unión. Para mí, es más claro y más extensible. Si luego deseo un objeto WarnObject
, simplemente necesito definirlo como extensión de ReturnInterface
, en lugar de ReturnInterface
todas las firmas y actualizarlas a FailObject|SuccessObject|WarnObject
.
Tengo algunos métodos que pueden devolver uno de los dos tipos de retorno (estoy usando un marco que utiliza MCV, por lo que refactorizar estas pocas funciones en particular no es atractivo)
¿Es posible declarar que el tipo de retorno devuelve uno u otro y falla en cualquier otra cosa?
function test(): ?
{
if ($this->condition === false) {
return FailObject;
}
return SucceedObject;
}
Como lo señaló el obispo, hay un RFC para agregar varios tipos de devolución. Sin embargo, pensé que agregaría que a partir de PHP7.1 ahora puede especificar un tipo de devolución con posibilidad de nulos como este:
function exampleFunction(string $input) : ?int
{
// Do something
}
Entonces, esta función tomaría una cadena y al agregar el signo de interrogación antes de int, está permitiendo que devuelva un valor nulo o un entero.
Aquí hay un enlace a la documentación: http://php.net/manual/en/functions.returning-values.php
Y aquí hay una cita de esa página que explica el uso: PHP 7.1 permite tipos de devolución nulos y nulos al preceder a la declaración de tipo con un? - (por ejemplo, la función canReturnNullorString ():? String)
Además, aquí hay otro hilo que se relaciona con esto: tipos de devolución anulables en PHP7
PHP 7.2 ahora admite el tipo de retorno de objeto
http://php.net/manual/en/migration72.new-features.php
function test(object $obj) : object
// return any type of object ...