2
respostas

Depois que apliquei o autoload, não funcionou meu código da forma que deveria.

Boa tarde, fiz a aula de autoload, não funcionou o código do jeito que deveria. A função remover parece não esta executando, não retorna o ultimo var_dump.

ArrayUtils.php

<?php declare(strict_types=1);

namespace Alura; 

class ArrayUtils
{
    public static function remover($elemento, array &$array) // (&) passagem por referencia.  não cria uma cópia do array, utilizar o mesmo array.
    {
        $posicao = array_search($elemento, $array, true); 
        //o true compara o conteudo e o tipo. // devolva o numero da posicao que o elemento se encontra na array;
        if(is_int($posicao)) { // is_int aceita o numero como um inteiro. se for int então retorna true. 
            unset($array[$posicao]);
        }else{
            echo "Não foi encontrado no array";        
        }

    }
}

autoload.php

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

E index.php

<?php declare(strict_types=1); // não faz a conversão de int pra string. (Dando erro na execução caso for int e foi definido string)

namespace Alura;

require 'autoload.php';

$correntistas_e_compras = [
    "Giovanni",
    "João",
     12,
    "Maria",
     25,
    "Luis",
    "Luísa",
    "12"
];

echo "<pre>";
var_dump($correntistas_e_compras);

ArrayUtils::remover(12, $correntistas_e_compras);

var_dump($correntistas_e_compras);
echo "</pre>";
2 respostas

Quando executo o index.php, só me retorna

array(8) {
  [0]=>
  string(8) "Giovanni"
  [1]=>
  string(5) "João"
  [2]=>
  int(12)
  [3]=>
  string(5) "Maria"
  [4]=>
  int(25)
  [5]=>
  string(4) "Luis"
  [6]=>
  string(6) "Luísa"
  [7]=>
  string(2) "12"
}

Oi Naiara,

Para o autoload funcionar você também vai ter que seguir uma estrutura de pastas específica, as classes vão ter que ficar dentro de uma pasta chamada "src" e dentro dessa pasta "src" deve ter outra chamada "Alura".

Para que eu consiga verificar o seu projeto como um todo, você consegue subir todos os arquivos em um repositório do GitHub, ou enviar para mim? um arquivo ZIP também serve.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software