2017-10-20 9 views
1

ビジネスロジックをモジュールをより簡単に配布するためのパッケージを作成しました。作曲ファイルは次のようになります。作者パッケージを正しく自動ロードするにはどうすればよいですか?

{ 
    "name": "aggiq/johnny-cash", 
    "description": "A collection of controllers, models, migrations, and tests for a phonebanking backend.", 
    "license": "MIT", 
    "authors": [ ... ], 
    "require": { 
     "illuminate/database": ">=5.5" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4" 
    }, 
    "autoload": { 
     "psr-4": { 
      "Johnny\\Phonebanking\\": "src/" 
     } 
    } 
} 

そして、我々のソースファイルがSRC /に実際にある:

のsrc /コントローラ/ PhonebankController.php のsrc /モデル/ Phonebank.php ...

私が保存され、私たちのgitlabレポにこれをプッシュして、テストプロジェクトで依存関係としてそれを含める:

{ 
    ..., 
    "repositories": [{ 
     "type": "package", 
     "package": { 
      "name": "aggiq/johnny-cash", 
      "version": "0.1", 
      "type": "package", 
      "source": { 
       "url": "gitlab url", 
       "type": "git", 
       "reference": "dev" 
      } 
     } 
    }], 
    "require": { 
     "aggiq/johnny-cash": "*", 
    }, 
    ... 
} 

そして、私は作曲んRの更新は、それが成功したプロジェクトをつかみ、ベンダーのフォルダにダウンロードします。私はテストプロジェクトのautoload_psr4.phpで見たとき

vendor/aggiq/johnny-cash/Controllers/PhonebankController.php 
... 

は、しかし、それはありません。私が逃した一歩はありますか?

編集:名前空間と一致するように大文字を持っているディレクトリを更新し、ここで生成PSR4のPHPファイルです:

<?php 

// autoload_psr4.php @generated by Composer 

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

return array(
); 

答えて

0

に。私たちは2つのことをする必要がありました。

"リポジトリ":[{ "タイプ": "VCS"、 を "我々はgitのサーバからロードするため

  1. 親可能パッケージに指定されたリポジトリタイプはvcsないpackageなければなりませんurl ":" git @ xxx。gitの」 }]子パッケージで

  2. パッケージタイプはlibrary次のようになります。

    "タイプ": "これら二つの変更が行われた後はライブラリー"

、作曲アップデートがインストールされていません

0

あなたはあなたのパッケージのcomposer.json正しくで自動ロードを登録している:

"autoload": { 
    "psr-4": { 
     "Johnny\\Phonebanking\\": "src/" 
    } 
} 

これは、Johnny\Phonebanking名前空間のどのクラスもsrcディレクトリにあることを意味します。例えば:

  • Johnny\Phonebanking\SomeClass =>src/SomeClass.php
  • Johnny\Phonebanking\SomeNamespace\AnotherClass =>src/SomeNamespace\AnotherClass.php

あなたが見ることができるように、それはCapitalLettersを尊重しなければなりません。


あなたがから、あなたのディレクトリの最初の文字を修正する必要があり、ことを言っ:私はそれを解決した

src/controllers/PhonebankController.php 
src/models/Phonebank.php 

src/Controllers/PhonebankController.php 
src/Models/Phonebank.php 
+0

私が提案したように 'src/Controllers'、' src/Models'などに名前を変更し、プロジェクトを自分のベースに再インポートしました。私はできる'vendor /'フォルダ内のディレクトリを確認してください。しかし、 'composer update'と' composer dump-autoload'を実行しても、クラスはpsr4自動ロードファイルに追加されません。ごめんなさい! – whiterook6

+0

接頭辞とその位置は、特定のファイルではなく、 'autoload_psr4.php'にあります。 '' Johnny \\ Phonebanking \\ "'が見つからない場合は、ファイルの内容を質問に追加してください。 –

+0

PSR4ファイルの内容を含むように編集 – whiterook6

関連する問題