【PHP入門】Composerのインストールと使い方

Composerの使い方

PHPのライブラリ管理ツール Composer のインストール方法と使い方を解説します。

目次

Composerとは

Composerとは、PHPのライブラリ管理ツールです。

ライブラリを一元管理できる

PHPで使用するライブラリをすべてComposerで管理しましょう。現在使用しているライブラリの一覧を確認したり、アップデートしたりという作業が簡単になります。

依存関係を解決

ライブラリAを使うにはライブラリBとライブラリCが必要になる。また、ライブラリBにはライブラリDが必要・・・というような依存関係を自動的に解決してくれます。ライブラリAをインストールすれば、BCDも一緒にインストールしてくれます。あら便利、優しい、好き。

プロジェクトごとに管理できる

昔々、PHPのライブラリ管理にはPEARが使われていました。しかしこれは、システム全体のインクルードディレクトリにライブラリをインストールするものでした。一つのシステムで複数のプロジェクトを開発している場合、それでは都合が悪い場合があります。

Composerはプロジェクトディレクトリ下にライブラリをインストールします。複数のプロジェクトがあったとしても、個別にライブラリを管理することができます。

読み込みが簡単

複数のライブラリを使用している場合、それぞれのライブラリをひとつずつPHPスクリプトに読み込まなければなりません。

Composerでは、オートローディング機能により、たった1行の記述ですべてのライブラリを読み込むことができます。あら便利、優しい、大好き。

Composerのインストール

Homebrewでインストール

Macを使っていてHomebrewを導入済みならば、とても簡単にインストールすることができます。ターミナルで次のコマンドを実行するだけです。

% brew install composer

公式のインストーラを使う

Homebrewが入っていないMacやUNIX/Linuxを使っているならば、公式サイトにアクセスしてください。「Download」リンクをクリックすると、4行のスクリプトがあるので、それを実行します。

ちなみに公式サイトのトップページをリロードすると指揮者のおじさんが服を着替えます。なぜが人種も変わります。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '*****') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup. php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Composerのバージョンが変わるたびにこのスクリプトも変わるので、必ず公式サイトからコピペしてください。

1行目でインストーラをダウンロードし、2行目で整合性を確認し、3行目で実行し、4行目でインストーラを削除しています。

3行目のphp composer-setup.phpにオプションを指定することもできます。おすすめのオプションは次の通りです。

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

--install-dirでComposerのインストール先を指定します。パスの通っているディレクトリを指定しましょう。--filenameでファイル名を指定します。初期値はcomposer.pharなので、シンプルにcomposerに変更します。インストール先の/usr/local/binは一般ユーザの書き込みが禁止されているのでsudoしました。

Windowsにインストール

Windowsにインストールする場合はComposer-Setup.exeというインストーラを使います。こちらからダウンロードしてください。

私はマカなので詳しい説明はしません(ドザに冷たい)。

激安プログラミングスクールのご紹介

独学は難しいと感じているあなたには、プログラミングスクールをオススメします。

  • 入会金不要、月額2,980円〜でプログラミングを学べる。
  • オンラインで学べるので地方在住者でも受講可能。
  • 現役エンジニアとのマンツーマンレッスンも月1回〜可能。
  • 回答率100%のQ&A掲示板に質問し放題。
  • 40種類以上の教材が学習し放題。HTML/CSS, JavaScript, PHP, Ruby, Python, WordPress, SQL などなど他にも盛りだくさん。

Composerの使い方

オートローディング

ComposerでインストールしたライブラリをPHPスクリプトに読み込むには、次のコードをPHPスクリプトに記述します。

require_once 'vendor/autoload.php';

複数のライブラリを使用していても、この1行でOKです。後々になって新しいライブラリを追加しても、このままでOKです。あら便利、優しい、大好き。

よく使うコマンド

Composerはプロジェクトごとにライブラリを管理するので、プロジェクトディレクトリに移動してからコマンドを実行します。

% cd project-name       #プロジェクトディレクトリへ移動
% composer <サブコマンド> #コマンドの実行

init

  • Composerを使うとき、最初の1回だけ実行します。
  • オプションを何も指定しなければ、対話形式で設定が進んでいきます。
  • ほぼ何も入力せずreturnでOKです。
  • composer.jsonファイルが作成されます。これはComposerでインストールしたパッケージ等の情報が書き込まれるファイルです。
  • vendorディレクトリが作成されます。この中にインストールするパッケージが格納されます。
% composer init   #initを実行


  Welcome to the Composer config generator



This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [masawo/project-name]: #パッケージ名の設定
Description []: #説明
Author [masawo <***@oopsoop.com>, n to skip]: #作成者の設定
Minimum Stability []: #最低安定性 dev|alpha|beta|RC|stable
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no #依存関係を対話的に定義したいか
Would you like to define your dev dependencies (require-dev) interactively [yes]? no #依存関係を対話的に定義したいか
Add PSR-4 autoload mapping? Maps namespace "Masawo\ProjectName" to the entered relative path. [src/, n to skip]: #PSR-4オートロードマッピングを追加するか

{
    "name": "masawo/project-name",
    "autoload": {
        "psr-4": {
            "Masawo\\ProjectName\\": "src/"
        }
    },
    "authors": [
        {
            "name": "masawo",
            "email": "***@oopsoop.com"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? #生成を承認するか
Generating autoload files
Generated autoload files
PSR-4 autoloading configured. Use "namespace Masawo\ProjectName;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';

require

  • パッケージをcomposer.jsonに追加して、インストールします。
  • 下記の例ではcomposer require <パッケージ名>を実行しました。指定したパッケージと依存するパッケージがインストールされます。
  • パッケージを指定せずにcomposer requireを実行した場合は対話形式になります。
  • インストールされたパッケージの情報はcomposer.lockファイルに書き込まれます。
% composer require monolog/monolog
./composer.json has been updated
Running composer update monolog/monolog
Loading composer repositories with package information
Updating dependencies
Lock file operations: 2 installs, 0 updates, 0 removals
  - Locking monolog/monolog (3.2.0)
  - Locking psr/log (3.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
  - Installing psr/log (3.0.0): Extracting archive
  - Installing monolog/monolog (3.2.0): Extracting archive
10 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
1 package you are using is looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
Using version ^3.2 for monolog/monolog

バージョンを指定してインストールする場合は次のようにします。

#特定のバージョンを指定
% composer require monolog/monolog:3.1.0

#ワイルドカードで指定
% composer require monolog/monolog:"3.*"

#チルダ(~)はマイナーバージョンが最新のものをあらわす
#下記は2.3.1以上3.0.0未満をあらわす
% composer require monolog/monolog:"~2.3.1"

#ハット(^)はパッチバージョンが最新のものをあらわす
#下記は2.3.1以上2.4.0未満をあらわす
% composer require monolog/monolog:"^2.3.1"

install

  • composer.jsonまたはcomposer.lockに記述されているパッケージをインストールします。
  • チーム開発で、リモートリポジトリから受け取ったcomposer.jsonなどを元にパッケージをインストールする場合に使います。個人開発ならばrequireを使えば済むのでinstallはあまり使わないのではないでしょうか。
% composer install

update

  • パッケージを最新のバージョンに更新します。
  • パッケージ名を指定しなければすべてのパッケージを、指定すればそのパッケージを更新します。
  • composer.lockファイルを更新します。
#すべてのパッケージを更新
% composer update

#特定のパッケージを更新
% composer update <パッケージ名>

remove

  • パッケージを削除します。
% composer remove <パッケージ名>

self-update

  • Composer自体をアップデートします。
  • Homebrewでインストールした場合は、このコマンドを使わずにHomebrewでアップデートしましょう。
% composer self-update

search

  • パッケージを検索します。
  • ComposerのメインリポジトリはPackagistです。このリポジトリから検索されます。ウェブブラウザで検索したければ、このサイトで検索できます。
 % composer search <キーワード>

show

  • パッケージの情報を表示します。
  • パッケージ名を指定しなければ、インストール済みのすべてのパッケージ名と簡単な説明が表示されます。
  • パッケージ名を指定すると、そのパッケージの詳細な情報を表示します。
#インストール済みパッケージの一覧を表示
% composer show

#特定のパッケージの情報を表示
% composer show <パッケージ名>

list

  • composerコマンドで使えるオプションとサブコマンドの一覧を表示します。
  • サブコマンドなしで単にcomposerを実行しても同じものが表示されます。
% composer list

help

  • サブコマンドの使い方を表示します。
% composer help <サブコマンド名>
激安プログラミングスクールのご紹介

独学は難しいと感じているあなたには、プログラミングスクールをオススメします。

  • 入会金不要、月額2,980円〜でプログラミングを学べる。
  • オンラインで学べるので地方在住者でも受講可能。
  • 現役エンジニアとのマンツーマンレッスンも月1回〜可能。
  • 回答率100%のQ&A掲示板に質問し放題。
  • 40種類以上の教材が学習し放題。HTML/CSS, JavaScript, PHP, Ruby, Python, WordPress, SQL などなど他にも盛りだくさん。
Composerの使い方

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次