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

Erro ao realizar autoload

Ao recarregar minha pagina não aparece o este erro: Acredito que o mesmo não esteje achando minha classe ArrayUtils,más não consigo encontrar onde está o erro.

Uncaught Error: Class 'alura\ArrayUtils' not found in C:\Users\momo_\PhpstormProjects\removendo_elementos_array\index.php:26
Stack trace:
#0 {main}
  thrown in C:\Users\momo_\PhpstormProjects\removendo_elementos_array\index.php on line 26

arquivo index.php

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

namespace alura;
require 'autoload.php';

$correntistas_e_compras = [
    "Giovanni",
    "João",
    12,
    "Maria",
    25,
    "Luis",
    "Luisa",
    "12",
    "Rafael",
];
echo "<h2>Array com todos elementos intáctos</h2>".PHP_EOL;
foreach ($correntistas_e_compras as $cc){
    echo "<h4>$cc</h4>".PHP_EOL;
}
$tamanhoArray = sizeof($correntistas_e_compras);

echo "<h5>Tamanho do array: $tamanhoArray</h5>".PHP_EOL;


ArrayUtils::removeElement("Giovanni", $correntistas_e_compras);

echo "<h2>Array com um elemento removido</h2>".PHP_EOL;
foreach ($correntistas_e_compras as $cc){
    echo "<h4>$cc</h4>".PHP_EOL;
}
$tamanhoArrayMd = sizeof($correntistas_e_compras);
echo "<h5>Tamanho do array: $tamanhoArrayMd</h5>".PHP_EOL;

arquivo autoload.php

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

classe ArrayUtils.php

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


class ArrayUtils
{
    public static function removeElement(string $elemento, array &$array): void
    {

        $posicao = array_search($elemento, $array,true);
        if(is_int($posicao)) {
            unset($array[$posicao]);
            echo var_dump($array);
        }else {
           echo "Elemento não encontrado no array";
        }
    }
}
2 respostas
solução!

Oi Rafael,

Eu dei uma olhadinha no seu código e acho que ele não está encontrando porque falta o namespace dentro da sua classe ArrayUtils.

Adiciona o namespace igualzinho o arquivo index.php no arquivo ArrayUtils.php, fica assim:

<?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 removeElement(string $elemento, array &$array): void
    {

        $posicao = array_search($elemento, $array,true);
        if(is_int($posicao)) {
            unset($array[$posicao]);
            echo var_dump($array);
        }else {
           echo "Elemento não encontrado no array";
        }
    }
}

Muito obrigado Giovanni nem tinha me tocado nesse detalhe importante, segui a sua indicação e funcionou...