1
resposta

comando ./vendor/bin/phan --allow-polyfill-parser src/Buscador.php

config.php

<?php

/**
 * This configuration will be read and overlaid on top of the
 * default configuration. Command line arguments will be applied
 * after this file is read.
 */
return [

    "target_php_version" => '8.3',

    'directory_list' => [
        'src',
        'vendor/symfony/console',
        'vendor/symfony/dom-crawler',
        'vendor/guzzlehttp/guzzle',
        'vendor/psr/http-message/',
    ],
    "exclude_analysis_directory_list" => [
        'vendor/'
    ],
    'plugins' => [
        'AlwaysReturnPlugin',
        'DollarDollarPlugin',
        'DuplicateArrayKeyPlugin',
        'DuplicateExpressionPlugin',
        'PregRegexCheckerPlugin',
        'PrintfCheckerPlugin',
        'SleepCheckerPlugin',
        // Checks for syntactically unreachable statements in
        // the global scope or function bodies.
        'UnreachableCodePlugin',
        'UseReturnValuePlugin',
        'EmptyStatementListPlugin',
        'LoopVariableReusePlugin',
    ],
];

estrutura de pastas: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

erro:

   analyze ████████████████████████████████████████████████████████████ 100.0% 33MB/34MB
src/Buscador.php:10 PhanUndeclaredTypeProperty Property \Alura\BuscadorCursos\Buscador->httpClient has undeclared type \GuzzleHttp\ClientInterface
src/Buscador.php:11 PhanUndeclaredTypeProperty Property \Alura\BuscadorCursos\Buscador->crawler has undeclared type \Symfony\Component\DomCrawler\Crawler
src/Buscador.php:13 PhanUndeclaredTypeParameter Parameter $crawler has undeclared type \Symfony\Component\DomCrawler\Crawler
src/Buscador.php:13 PhanUndeclaredTypeParameter Parameter $httpClient has undeclared type \GuzzleHttp\ClientInterface
src/Buscador.php:22 PhanUndeclaredClassMethod Call to method request from undeclared class \GuzzleHttp\ClientInterface
src/Buscador.php:26 PhanUndeclaredClassMethod Call to method addHtmlContent from undeclared class \Symfony\Component\DomCrawler\Crawler
src/Buscador.php:28 PhanUndeclaredClassMethod Call to method filter from undeclared class \Symfony\Component\DomCrawler\Crawler
infoshop@Mac-mini-de-Infoshop buscador-cursos-alura % ./vendor/bin/phan --allow-polyfill-parser src/Buscador.php      

Por que ainda não é reconhecido as classes, poderia me ajudar ? agradeço.

1 resposta

Olá Gabriel! Tudo joia?

O erro que você está enfrentando ocorre porque o Phan não está conseguindo identificar os tipos das classes ClientInterface e Crawler. Isso geralmente acontece quando o Phan não está analisando todos os diretórios necessários onde essas classes estão localizadas.

Pelo que você descreveu, o arquivo config.php está configurado corretamente para incluir os diretórios dos pacotes que você está usando. No entanto, é importante garantir que as dependências estejam instaladas corretamente e que o autoload do Composer esteja configurado.

Aqui estão algumas dicas para resolver o problema:

  1. Verifique o composer.json: Certifique-se de que as dependências guzzlehttp/guzzle e symfony/dom-crawler estão listadas no seu composer.json.

  2. Reinstale as dependências: Execute composer install para garantir que todas as dependências estejam instaladas corretamente.

  3. Verifique o autoload: Certifique-se de que o autoload do Composer está configurado corretamente e que você está incluindo o vendor/autoload.php no seu projeto.

  4. Atualize o Phan: Certifique-se de que o Phan está atualizado. Você pode fazer isso executando composer update phan/phan.

Se tudo estiver configurado corretamente e o erro ainda persistir, pode ser necessário revisar o código para garantir que as classes estão sendo importadas corretamente com use no início do arquivo Buscador.php.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.