2016-03-22 11 views
0

私は作曲家と仕事をしようとしており、独自のパッケージを作成します。私のパッケージプロジェクトは、次のファイルの構造を有する:composer autoload error

scr/Scheduler.php 
.gitignore 
composer.json 

テストクラス:

namespace david\Scheduler; 

use Symfony\Component\Yaml\Parser; 

class Scheduler 
{ 
    private $yamlParser; 

    public function __construct() 
    { 
     $this->yamlParser = new Parser(); 
    } 
} 

と私はプライベートgithubのにコミットしたすべてのcomposer.jsonファイル

... 
"require": { 
    "symfony/yaml": "~3.0.3" 
}, 
"autoload": { 
    "psr-4": { 
     "david\\Scheduler\\": "src/" 
    } 
} 

をリポジトリ。現在、私はmasterブランチとタグがありません。私は作曲はgithubのプロジェクトは、ベンダーのディレクトリにクローン化され、保存されます更新し実行している場合は

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "david/scheduler", 
      "type": "package", 
      "version": "dev-master", 
      "source": { 
       "url": "[email protected]:david/scheduler.git", 
       "type": "git", 
       "reference": "master" 
      } 
     } 
    } 
], 
"require": { 
    "david/scheduler": "dev-master" 
} 

: 私の第二のステップは、以下のcomposer.jsonファイルを使用してクライアントのプロジェクトを作成することでした。しかし、私のパッケージだけ。 symfony/yamlへの依存はロードされません。

vendor 
    composer 
    david/scheduler 

また、作者は空のautoload_psr4ファイルを作成します。

$vendorDir = dirname(dirname(__FILE__)); 
$baseDir = dirname($vendorDir); 

return array(
); 

は私が

+0

あなたがメインプロジェクト内のプライベートリポジトリを登録する方法を示しすることはできますか? URLを難読化して非公開にすることができます。 –

+0

@ChristopheCoevoet composer.jsonスニペットを更新しました。また、私は説明に次の行を追加しました: '現在、私はマスターブランチしかタグなしです。 ' – David

+0

' repositories'セクションをコードスニペットの間違った部分に追加したとします'david/scheduler'リポジトリ内で' david/scheduler'を参照するために)。私はこれに基づいて以下に答えました。 –

答えて

1

あなたの問題は、あなたがルートパッケージはのメタデータを定義していることを意味packageタイプを使用してカスタムのリポジトリを、登録されていることである...私のアーキテクチャでは、いくつかの問題があるかもしれないと思いますdavid/scheduler、git repoのcomposer.jsonファイルはComposerで使用されません。このパッケージ定義では、symfony/yamlコンポーネントに依存せず、Schedulerクラスのオートローディングもありません。

一般的に、packageリポジトリは最後の手段とみなされるべきです(多くの欠点があります)。 gitリポジトリを制御するときに、composer.jsonファイルをリポジトリに格納し、vcsリポジトリを使用する方がはるかに優れています(git自体から来るメタデータに依存することができ、パッケージメタデータはパッケージgit repoで提供されます)。

ルートパッケージには、次のようになります。

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "[email protected]:david/scheduler.git" 
     } 
    ], 
    "require": { 
     "david/scheduler": "dev-master" 
    } 
} 
関連する問題