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

Uncaught Error: Class 'alura\arrayutils' not found

o erro do titulo foi aprensentado e não consegui encontrar o erro.

correntistas.php

<?php
namespace alura;
require 'autoload.php';
$correntistasecompras = ["giovanni", "joao", 12, "Maria", 25, "Luis", "Luiza", "12"];

echo "<pre>";

var_dump ($correntistasecompras);
echo "<p></p>";
arrayutils::remover("joao", $correntistasecompras);
var_dump($correntistasecompras);
echo "</pre>";

autoload.php

<?php
spl_autoload_register(
    function(string $namespaceclasse): void{
        $caminho = "/src";
        $diretorio_classe = str_replace("\\", DIRECTORY_SEPARATOR, $namespaceclasse);
        @include_once getcwd() . $caminho . DIRECTORY_SEPARATOR . "{$diretorio_classe}.php";
}
);
?>

e arrayutils.php

<?php declare(strict_types=1); //DESABILITA A CONVERSÃO AUTOMÁTICA DE TIPOS DE ARGUMENTOS E RETORNO DE FUNÇÕES.

namespace alura;



class arrayutils {
    public static function remover(string $elemento, array &$array){
        //o terceiro argumento (true) do array_search faz com que ele ative a busca estrita e faz com que ele ignore o numero int(12) e exclua somente a strig "12"
        $posicao = array_search($elemento, $array, true);
        //caso a $posicao seja valida ou seja diferente de "false", ele executará a exclusao.
        //a funçao is_int() garante que caso você passe a posição do array ao invés do valor ele também será excluido.
        if(is_int($posicao)){
            unset($array[$posicao]);
            echo var_dump($array);
        } else{echo "elemento não encontrado no array <br>";}
    }

}
?>
2 respostas
solução!

Marcos,

Tudo bem contigo? Executei teu código, esta correto!

Uma sugestão, o que acho que pode ter dado errado é tua estrutura de pastas:

Na raiz, tem de estar os arquivos:

correntistas.php

autoload.php

O arquivo arrayutils.php tem de estar dentro da pasta alura, dentro da pasta src:

correntistas.php

autoload.php

/src/alura/arrayutils.php

Verifique isto e execute novamente, para mim aqui deu tudo certo sem mexer nada no teu código.

Um abraço.

obrigado pela ajuda, o arquivo correntistas.php e o autoload.php eu havia colocado no diretorio /src . Na aula entendi que deveria ser assim, agora que movi eles para a pasta raiz deu certo.