Ошибка PHP Uncaught: класс не найден с помощью автозагрузки композитора

Я пишу простой проект, используя SymfonyConsole пакет, но я получил класс не найдено исключение:

PHP Fatal error:  Uncaught Error: Class 'Project\ExtractLinkCommand' not found in /home/PhpstormProjects/RVLE/RVLE.php:9
Stack trace:
#0 {main}
thrown in /home/PhpstormProjects/RVLE/RVLE.php on line 9

Я не могу найти, в чем проблема, кто-то говорит, что автозагрузчик не стандартный, и вы должны написать его самостоятельно.
Я также обновил композитор и побежал composer dump-autoload,

Вот мои файлы ->

RVLE.php:

#!/usr/bin/env php
<?php
require 'vendor/autoload.php';

use Project\ExtractLinkCommand;
use Symfony\Component\Console\Application;

$app = new Application('RVLE' , '1.0');
$app->add(new ExtractLinkCommand());
$app->run();

extractCommand.php:

<?php namespace Project;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class ExtractLinkCommand extends Command
{
public function configure()
{
$this->setName('getLinks')
->setDescription('extract all available video links for given page url')
->addArgument('url', InputArgument::REQUIRED, 'page link');
}

public function execute(InputInterface $input, OutputInterface $output)
{
$url = $input->getArgument('url');
$output->writeln($url);
}
}

composer.json:

{
"require": {
"symfony/console": "^3.3"},
"autoload": {
"psr-4": {
"Project\\": "src/"}
}
}

Это моя структура проекта:

.
├── composer.json
├── composer.lock
├── RVLE.php
├── src
│   └── extractCommand.php
└── vendor
├── autoload.php
├── bin
├── composer
├── psr
└── symfony

2

Решение

Я думаю, что вам нужно сопоставить имя вашего файла с именем вашего класса, поэтому оно должно быть ExtractLinkCommand.phpв противном случае автозагрузчик композитора не найдет его.

4

Другие решения

PSR-4 работает только с пространствами имен. Он удалил префикс пространства имен, указанный в composer.json, из полного имени класса, а остаток преобразуется в путь, в конце добавляется «.php» и производится поиск по указанному пути. Класс myNamespace \ myClass и «psr-4»: {«myNamespace \»: «src»} попытаются загрузить src / myClass.php

1

По вопросам рекламы [email protected]