2017-08-24 12 views
2

を使用していない例外私はSymfonyConsoleパッケージを使用して簡単なプロジェクトを書いているが、私はクラスが見つからないしまった:PHP不明なエラー:クラスの作曲の自動ロード

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/" 
    } 
    } 
} 

これは私のプロジェクト構造である:私はあなたはそれがExtractLinkCommand.phpする必要がありますので、あなたのクラス名にファイル名と一致する必要があると思う

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

答えて

4

、そうでない場合は作曲オートローダがそれを見つけることができません。

+2

この回答を受け入れることはどうですか?結局のところ、あなたの問題を解決したはずです! – localheinz

1

PSR-4は名前空間でのみ動作します。それは完全なクラス名からcomposer.jsonで与えられた名前空間接頭辞を削除し、残りはパスに変換され、 ".php"は最後に追加され、与えられたパスで検索されます。クラスmyNamespace \ myClassと "psr-4":{"myNamespace \": "src"}はsrc/myClass.phpをロードしようとします