ローカルストレージのファイルをComposerのリポジトリとして指定する
gitなどで管理するまでもない雑多なライブラリをComposerで取り込みたい。呼び出される側の設定
Composerで取り込むプログラム側。
こちらを参考にさせていただきました。
Composer が PSR-4 に対応していた
・my_library/src/Sample.php
- <?php
- namespace Symfoware\\Example;
- class Sample {
- public function say() {
- return "Hello, World!";
- }
- }
・my_library/composer.json
- {
- "name": "symfoware/mylib",
- "license": "MIT",
- "autoload": {
- "psr-4": {
- "Symfoware\\Example\\": "src/"
- }
- }
- }
ここの「name」で指定した名前「symfoware/mylib」で、requireすることになります。
呼び出し側の指定
ポイントは2つ。
repositoriesにtype:pathでcomposer.jsonへのパスを指定すること。
https://getcomposer.org/doc/05-repositories.md#path
requireのバージョンには「*@dev」と指定しておくこと。
ここの指定が「*」だとエラーになります。
Problem 1
- The requested package symfoware/mylib could not be found in any version, there may be a typo in the package name.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
これの意味がわからなくて苦しみました。
ここを見て解決。
phpdocumentorのcomposer install時のエラー解消
・composer.json
- {
- "repositories": [
- {
- "type": "path",
- "url": "./my_library"
- }
- ],
- "require": {
- "symfoware/mylib": "*@dev"
- }
- }
最終的にテストした時の階層はこんな感じになります。
インストールを実行
$ composer install
想定通り、vendorフォルダへ資産が配置されました。
読み込まれる側でバージョン指定
ライブラリ側のcomposer.jsonでバージョンを指定しておけば
- {
- "name": "symfoware/mylib",
- "license": "MIT",
- "version":"0.1",
- "autoload": {
- "psr-4": {
- "Symfoware\\Example\\": "src/"
- }
- }
- }
呼び出し側の指定を「*」としてもOKでした。
- {
- "repositories": [
- {
- "type": "path",
- "url": "./my_library"
- }
- ],
- "require": {
- "symfoware/mylib": "*"
- }
- }
こちらの方が良さそうです。
リンクではなくコピー
上記の指定だと、ライブラリのファイルのコピーではなく、ライブラリのパスに対しての
リンクが設定されました。
symlink:falseを指定することで、リンクではなくコピーになります。
- {
- "repositories": [
- {
- "type": "path",
- "url": "./my_library",
- "options" : {
- "symlink": false
- }
- }
- ],
- "require": {
- "symfoware/mylib": "*"
- }
- }
- 関連記事
-
- PHP file_get_contentsでAPIサーバーにGET,POST,画像アップロード
- PHP 配列の先頭の要素を取り出す(array_shift)
- ローカルストレージのファイルをComposerのリポジトリとして指定する
- PHP ファイル内のフォルダを指定してtarに圧縮する
- PHP 指定ディレクトリのファイルをtarに圧縮する
コメント