PHP 7 presenta declaraciones de tipo de retorno . Lo que significa que ahora puedo indicar que el valor de retorno es una determinada clase, interfaz, matriz, invocable o uno de los tipos escalares recién imprimibles, como es posible para los parámetros de función.
function returnHello(): string {
return 'hello';
}
A menudo sucede que un valor no siempre está presente y que puede devolver algo de algún tipo o nulo. Si bien puede hacer que los parámetros sean anulables estableciendo su valor predeterminado en nulo ( DateTime $time = null
), no parece haber una forma de hacerlo para los tipos de retorno. ¿Es ese el caso, o de alguna manera no encuentro cómo hacerlo? Estos no funcionan:
function returnHello(): string? {
return 'hello';
}
function returnHello(): string|null {
return 'hello';
}
php
nullable
return-type
type-hinting
php-7
Jeroen De Dauw
fuente
fuente
function returnString(?string $stringNull) : ?string { return $stringNull;}
Trowable
interfaz PHP7 (específicamente, extender laTypeError
)Respuestas:
PHP 7.1 ahora admite tipos de retorno anulables . El primer RFC al que me vinculé es el que eligieron:
vieja respuesta:
Como mi comentario fue en realidad una respuesta a la pregunta:
PHP 7 todavía no admitirá tipos de retorno anulables, pero hay un RFC para abordar eso, apunta a aterrizar en PHP 7.1. Si se aprueba, la sintaxis afectaría a todas las sugerencias de tipo (tanto los tipos de retorno como las sugerencias de tipo):
También hay una RFC competitiva para agregar tipos de unión, que podría hacer lo mismo, pero se vería diferente:
Por ahora, sin embargo, tendrás que escribir:
O simplemente devuelva una cadena vacía para que sea consistente con el tipo de retorno, y verifique el valor falso:
fuente
PHP 7 won't support nullable return-types just yet, but there's an RFC out to address just that
- Sí, RFC, "todavía". No me malinterpreten: soy un gran usuario de PHP desde PHP3 realmente horrible hasta ahora, sin vacíos, pero cuando vi todos estos RFC que rechazaron por 7, mi impresión fue simplemente "¡¿WTF ?!". Los usuarios ven el desorden y están dispuestos a limpiarlo de forma compatible con versiones anteriores y simplemente obtienen "no". ¿Métodos limpios nombrando desorden? ¿Arregladonull
no ser ciudadano demasiado especial? No, no es necesario ¿Agregar opción para hacer que todo sea sensible a mayúsculas y minúsculas? Nah ... Y luego, sorprende que la gente cambie.var
). Lo que es lamentable es que, en cambio, aceptaron demasiados productos agradables (operador de nave espacial, por ejemplo)Los tipos anulables están disponibles en PHP 7.1.
Este es un ejemplo de sintaxis:
PHP 7.1 ahora es GA y puede actualizar desde PHP 7.0 (solo hay algunos cambios incompatibles con versiones anteriores que debe verificar)
fuente
Funciona con cualquier tipo.
Ejemplo:
fuente