Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

:void retorna erro

Boa noite!

Ao repetir os passos da aula tive o seguinte erro no terminal:

Uncaught TypeError: Return value of {closure}() must be an instance of void, none returned in /php-arrays-1/aula4/autoload.php:9
Stack trace:
#0 [internal function]: {closure}('Alura\\ArrayUtil...')
#1 /php-arrays-1/aula4/index.php(20): spl_autoload_call('Alura\\ArrayUtil...')
#2 {main}
  thrown in /php-arrays-1/aula4/autoload.php on line 9

E ao retirar o :void da funcao, o codigo foi executado normalmene, sem erros.

Meu autoload.php esta assim:

<?php

    spl_autoload_register(
        function(string $namespaceClasse):void
        {
            $caminho = '/src';
            $diretorioClasse = str_replace('\\', DIRECTORY_SEPARATOR, $namespaceClasse);
            @include_once getcwd() . $caminho . DIRECTORY_SEPARATOR . $diretorioClasse . ".php";
        }
    );

Versao do PHP e SO: PHP 7.0.33-0ubuntu0.16.04.6

O que significa esse erro?

Grato.

2 respostas
solução!

Oi Anderson,

O tipo de retorno :void é uma funcionalidade que veio a partir do PHP 7.1.

Como você está usando a versão 7.0, recomendo que você atualize a sua versão do PHP para a mais recente, que é a 7.3.

Se você não puder atualizar, pode tirar o :void do código também que ele vai funcionar sem problemas, pode ficar tranquilo :)

Oi Giovanni!

Entendi, vou atualizar aqui entao.

Obrigado. =]