comandos - value en php




No válido como tipo de retorno (4)

Estaba probando tipos de devolución con PHP 7.

Creé un script simple para probar los tipos de devolución de PHP 7:

<?php

Class Obj {

    public function __construct(){

    }

    public function test(): string { //a string needs to be returned
        return "ok";
    }

}

function foo(): Obj { //instance of Obj needs to be returned
    return new Obj();
}

$o = foo();
echo $o->test(); // output: ok

Ahora, en otros lenguajes de programación cuando especifica un tipo de devolución void , significa que no puede devolver nada o recibirá un error. Entonces escribí este guión:

<?php

    function foo(): void {

    }

    foo(); 

Ahora, en el script anterior, el resultado esperado no es nada. En cambio, me da un error fatal:

Error fatal: el valor de retorno de foo () debe ser una instancia de vacío, ninguno devuelto en la línea 2

Mi pregunta es (no pude encontrarla), ¿en PHP 7 habrá un tipo de void similar?


Editar:

Se ha publicado un nuevo RFC separado para un tipo de retorno nulo , ha pasado la votación y se implementó en PHP 7.1.
Ahora hay un tipo de devolución de void en PHP. :)

Publicación original:

Tomado de wiki.php.net :

Trabajo futuro

Las ideas para el trabajo futuro que están fuera del alcance de este RFC incluyen:

  • Permitir que las funciones declaren que no devuelven nada (nulo en Java y C)

Por lo tanto, actualmente no hay forma de declarar que no devuelve nada.
No sé qué es lo mejor en su situación, pero probablemente no especifique el tipo de devolución por ahora.

Para responder a su pregunta si habrá un tipo de devolución void en PHP 7:
Aún no hay garantía , pero creo que es muy probable que el void o un sinónimo se implementen de alguna manera.


@BeNice Entiendo su punto, de todos modos resumo la consideración de Levi Morrison como una cuestión práctica de sostenibilidad: al presentar el void como un posible tipo de devolución de hecho, rompemos la suposición de que el único tipo posible de null es null .

De esta forma, se debe devolver el void para la verificación de tipo de null , cambiando las restricciones de la arquitectura por diseño y causando un desastre en la compatibilidad con versiones anteriores.

// your choice implies this comparison should be true:
gettype(null) === void;

Creo que quien utilizó null con null frecuencia en su código soportaría la implementación del tipo de void .


El tipo de devolución de void fue aceptado para php 7.1. Entonces vendrá en el futuro.

Algunos ejemplos sobre cómo funcionará:

function should_return_nothing(): void {
    return 1; // Fatal error: A void function must not return a value
}

function returns_null(): void {
    return null; // Fatal error: A void function must not return a value
}
function lacks_return(): void {
    // valid
}
function returns_nothing(): void {
    return; // valid
}

¡Vea el RFC de Andrea Faulds para más información!


No hay un tipo equivalente para void en php, return NULL; puede ajustarse a su requerimiento ya que no tiene ningún tipo como 0 o cualquier otro valor. Nota: el vacío real significa que no hay retorno.





php-7