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

Dúvida relacionada ao diretório bin

Se o diretório vendor está sendo ignorado pelo .gitignore, como ele será disponibilzado no pacote que subi e, posteriormente, baixei para criação do novo projeto?

Percebi que mesmo tendo add "bin": ["buscar-cursos.php"] no arquivo composer.json , não é criado no diretório bin (conforme print).

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Outra dúvida é que estou tendo um erro ao tentar rodar o arquivo teste.php do projeto criado a partir de baixar o meu pacote. O arquivo buscar-cursos.php do projeto inicial funciona perfeitamente.

Segue o arquivo teste.php:

<?php

use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

require_once "vendor/autoload.php";

$client = new Client(['base_uri' => 'https://www.alura.com.br/', 'verify' => false]);
$crawler = new Crawler();

$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');

foreach ($cursos as $curso){
    echo $curso . PHP_EOL;
}

Arquivo buscar-cursos.php:

#!/user/bin/env php
<?php

require_once 'vendor/autoload.php';

use Alura\BuscadorDeCursos\Buscador;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$client = new Client(['base_uri' => 'https://www.alura.com.br/', 'verify' => false]);
$crawler = new Crawler();

$buscador = new Buscador($client, $crawler);
$cursos = $buscador->buscar('/cursos-online-programacao/php');

foreach ($cursos as $curso){
    exibemensagem($curso) . PHP_EOL;
}

Erro ao tentar executar o teste.php:

PHP Warning:  require(/home/<path>/Cursos/Alura/Avancando-PHP/projeto-2/vendor/composer/../elvioamaral/buscador-cursos/functions.php): failed to open stream: No such file or directory in /home/<path>/Cursos/Alura/Avancando-PHP/projeto-2/vendor/composer/autoload_real.php on line 55
PHP Fatal error:  require(): Failed opening required '/home/<path>/Cursos/Alura/Avancando-PHP/projeto-2/vendor/composer/../elvioamaral/buscador-cursos/functions.php' (include_path='.:/usr/share/php') in /home/<path>/Cursos/Alura/Avancando-PHP/projeto-2/vendor/composer/autoload_real.php on line 55
4 respostas

Se o diretório vendor está sendo ignorado pelo .gitignore, como ele será disponibilzado no pacote que subi e, posteriormente, baixei para criação do novo projeto?

O vendor JAMAIS deve ser versionado pois é muito grande. O composer vai baixar as dependências na máquina de quem instalar o pacote. O composer que vai criar essa pasta vendor. E esse arquivo só vai ser criado na pasta bin de quem fizer o require dele, não no próprio projeto.

Sobre o seu erro, a mensagem é bem clara. Não existe um arquivo functions.php na raiz do projeto mas você adicionou isso no "autoload" do composer.json.

Mestre Vinicius,

Não entendo pq o arquivo functions.php também não chegou no projeto baixado com o composer. https://github.com/elvioamaral/Alura_Curso_Composer-Buscador-de-cursos

Com relação ao diretório bin, também não entendo pq não está sendo criado no projeto baixado com o composer.

Eu excluí o diretório onde estava o 2º projeto que tinha criado anteriormente, recriei o diretório, rodei um composer clear-cache, e baixei o projeto novamente (composer require elvioamaral/buscador-cursos) e mesmo assim não é criado a pasta bin, conforme print abaixo.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Você não tageou suas atualizações:

https://github.com/elvioamaral/Alura_Curso_Composer-Buscador-de-cursos/tree/v1.2.0

Seu projeto na última versão "estável" (1.2.0) não possui o arquivo de functions nem o bin.

Entendido grande Vinicius. Realmente não tinha tageado. Agora fiz isso e subiu o arquivo functions e o bin. Valeuzão.