Linux Mint 19.3 のコードネームは「Tricia」だそうです
roadtoalinuxmintuser

theming

roundup
Linux Mint 18 : PHP パッケージ管理ツール「Composer」のインストールと使用例 00:39

Composer とは


Composer はプロジェクトの依存関係をインストールや更新しやすくすることをメインとした PHP の依存関係管理ツールです。このツールはパッケージの依存関係をチェックし、プロジェクトの要件に応じて適切なバージョンをインストールしてくれます。

このチュートリアルでは、Linux Mint に Composer をインストールする方法をシェアしたいと思います。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
まずは、パッケージマネージャーのキャッシュを更新し、インストーラをゲットするのに必要な curl や php、Composer が依存関係をダウンロードするのに必要な git もインストールしておきます:
sudo apt-get update && sudo apt-get install curl php7.0-cli git
Compser のインストーラーをダウンロードし /usr/local/bin に移します:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer && sudo chmod +x /usr/local/bin/composer
出力例:
All settings correct for using Composer
Downloading...

Composer (version 1.4.1) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer


使い方


うまくインストールされたか試してみましょう:
composer
出力例:
   ______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ ¥/ __ `__ ¥/ __ ¥/ __ ¥/ ___/ _ ¥/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
¥____/¥____/_/ /_/ /_/ .___/¥____/____/¥___/_/
/_/
Composer version 1.4.1 2017-03-10 09:29:45

Usage:
command [options] [arguments]

Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

. . .

こう表示されれば、Composer が正常にシステムにインストールされたことを意味します。

補足 : サーバーでホストするプロジェクトごとに別々の Compser の実行ファイルを持ちたい場合は、プロジェクトごとにローカルにインストールすることができます。この方法はあなたがソフトをシステム全体にインストールする権限を持っていない場合にも便利です。この場合、インストールは以下のコマンドで行うことができます:
curl -sS https://getcomposer.org/installer | php
このコマンドはカレントディレクトリに composer.phar を生成し、次のコマンドで実行することができます:
php composer.phar [command]

プロジェクトで Composer を使用するには、composer.json が必要です。このファイルは、基本的にどの依存関係が必要なのか、各依存関係はどのバージョンがインストールできるのかを Composer に伝えることで、下位互換性の問題を回避することができ、プロジェクトの一貫性を維持するのに重要です。

このファイルを手動で作成する必要はありません。手動ですると、構文エラーに遭遇することでしょう。Composer は require コマンドを使って依存関係をプロジェクトに追加したときに composer.json を自動でします。依存関係の追加も、手動でファイルを編集することなく、同様に追加することができます。

Composer を使ってプロジェクトに依存関係としてパッケージをインストールするプロセスは、通常次の手順のようになります:
  • アプリが必要とするライブラリの種類を特定する
  • Composer 用の公式リポジトリである Packagist でオープンソースのライブラリの安定版を検索する
  • 依存関係を選択する
  • composer require を実行して、composer.json に依存関係を書き込み、依存関係をインストールする


実際にどう機能するか簡単にデモアプリで検証してみましょう。

このデモアプリのゴールは、指定した文字列を URL として使いやすい文字列に変換することです。これは、slug というパッケージで実現することができます。ページタイトルを URL に変換するために広く使用されています。

プロジェクト用のディレクトリ(ここでは「slugify」)を作成しておきます:
cd && mkdir slugify && cd slugify

Packagist 上でスラッグを実装してくれるパッケージを検索しましょう。Packagist で slug と検索するとこんな結果が表示されます:
範囲を選択_033

リストの各パッケージの右側にある2つの数字は、上がパッケージがインストールされた回数を表し、下がそのパッケージが GitHub 上で star された回数を示しています。これらの数字(検索バーの右側にある2つのアイコンをみて下さい)順に検索結果を並べ替えることができます。一般的に言えば、インストール回数が多く、星の数も多いパッケージは、多くの人々に使用されている分、安定する傾向があります。パッケージの説明を確認することも本当に探しているものがそれでいいかを知るうえで大切です。

いま必要なのは文字列からスラッグに変換してくれるツールです。「cocur/slugify」がインストール回数と星の数からしてよさそうです。

ところで、Packagist にあるパッケージにはベンダー名とパッケージ名があります。各パッケージには、Github のリポジトリで使用されている形式と同じ識別子 (vendor/package) を持っています。インストールしたいライブラリは、cocur/slugify という名前空間を使っています。ここで必要なのは cocur/slugify という名前空間です。

インストールしたいパッケージの正確な名前が分かったので composer require コマンドを実行します:
composer require cocur/slugify
出力例:
Using version ^2.5 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing cocur/slugify (v2.5): Downloading (100%)
Writing lock file
Generating autoload files


出力からわかるように、Composer は自動的に使うべきパッケージのバージョンを決めます。プロジェクトのディレクトリを除くと composer.json と composer.lock と vendor ディレクトリがみえるでしょう:
ls -l ~/slugify
出力例:
合計 12
-rw-r--r-- 1 shellingford shellingford 59 3月 24 21:54 composer.json
-rw-r--r-- 1 shellingford shellingford 2901 3月 24 21:54 composer.lock
drwxr-xr-x 4 shellingford shellingford 4096 3月 24 21:54 vendor


composer.lock ファイルは、各パッケージのどのバージョンがインストールされているかを格納し、これによって他の誰かがあなたのプロジェクトをクローンし、その依存関係をインストールしようとしても同じバージョンが使用されるにします。vendor はプロジェクトの依存関係があるディレクトリです。vendor はバージョン管理にコミットする際には不必要です。その時は composer.json と composer.lockファイルだけを含めましょう。

補足 : すでに composer.json があるプロジェクトをインストールする場合は、composer install を実行することでプロジェクトの依存関係をダウンロードする必要があります。

ついでに composer.json の中身をのぞいてみましょう:
cat composer.json
出力例:
{
"require": {
"cocur/slugify": "^2.5"
}
}


^ という特殊文字がバージョンの前についているのに気づくでしょう。Composer はプロジェクトが安定でかつ柔軟であるために、必要なパッケージのバージョンを定義するためのさまざまな制約や形式をサポートしています。カレット(^)は自動で生成された composer.json で使用され、相互運用性に便利なオペレータです。^ の後にはセマンティック バージョニングが続きます。この例ですと、互換性を保つために最小バージョンを 2.5 として今後のアップデートで 3.0 まで許可する設定になっています。

一般的には composer.json ファイルのバージョンの制約を変更する必要はありません。しかし、場合によっては手動で変更しても良い場合もあるかもしれません。例えば、必要としているライブラリの新バージョンがリリースされて、アップグレードしたいが、セマンティックバージョニングにそぐわないときです。

ここでバージョンの制約の読み方について少し理解を深めたいと思います:
制約意味利用できるバージョンの一例
^1.0>= 1.0 < 2.01.0, 1.2.3, 1.9.9
^1.1.0>= 1.1.0 < 2.01.1.0, 1.5.6, 1.9.9
~1.0>= 1.0 < 2.0.01.0, 1.4.1, 1.9.9
~1.0.0>= 1.0.0 < 1.11.0.0, 1.0.4, 1.0.9
1.2.11.2.11.2.1
1.*>= 1.0 < 2.01.0.0, 1.4.5, 1.9.9
1.2.*>= 1.2 < 1.31.2.0, 1.2.3, 1.2.9

より詳細なバージョンの制約についてはここをご覧ください。

Composer はクラスのオートロードを可能にするスクリプトも提供しています。クラスオートローディング機能とはrequire や include を記述することなく、クラスが使われているとそれに応じたファイルを自動的に読みこむ機能です。

PHP スクリプトで、クラスのインスタンス化の前に vendor/autoload.php を読み込むだけで OK です。

では、slugify を使ったサンプルアプリに戻り、test.php を作成してみましょう。ここで、cocur/slugify ライブラリを使用します:
xed test.php
test.php(円記号をバックスラッシュに変えてください):
<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur¥Slugify¥Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');

端末でこの php を実行してみます:
php test.php
これは「hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it」と出力するはずです。

補足 : どうも、内部でバックスラッシュを円記号に変えるようで、そのため「/home/shellingford/slugify/test.php(8): Cocur¥Slugify¥Slugify->slugify('Hello World, th...')」となってしまいました。そこで、問題の /slugify/vendor/cocur/slugify/src/Slugify.php の
        if ($options['lowercase']) {
$string = mb_strtolower($string);
}

をコメントアウトしてあげることで小文字にならないもののエラーなく出力されるようになりました。

プロジェクトの依存関係をアップデートしたくなったらこのコマンドを実行します:
composer update
あるいは特定のライブラリを更新したいだけなら、こういった感じでコマンドを実行します:
composer update vendor/package vendor2/package2

参考元: digitalocean.com
| Linux |
<< NEW | TOP | OLD>>
スポンサーサイト 00:39
| - |

Show some apps list:


miku

Follow on your feed reader:


About this blog:

Linux Mint-centric chronicle with anime girls since 2009.Best View with Google Chrome 1980x1080 dimension.
Info 更新は不定期です。

script

LinuxMint ISO 日本ミラーサーバー:




Amazon: