Composerを使ってみよう!

composer とはプロジェクトが必要とするライブラリやパッケージを管理し、それをもとにインストールするPHPの依存管理ツールです。

LinuxでいうYUMAPTみたいなものです。
Node.jsでいうnpmYarnみたいな…。

1ヶ月に1回程度の間隔でComposerの最新バージョンを確認しておきましょう!
なお、ComposerはPHPバージョンとの関係性が非常に重要になりますので、使用する際は慎重に。

インストール

公式サイトにインストール方法が載ってますので、そちらをご確認ください!
https://getcomposer.org/download/

レンタルサーバにインストールする際は結構面倒なので、レンタルサーバの性質など理解した上で実施してください。

エックスサーバー Composerをインストール(バージョン変更)する方法
https://analyzegear.co.jp/blog/1694

Composer 本体アップデート

最新バージョンにアップデート

composer self-update

バージョンを指定してアップデート

composer self-update 2.3.5

2.x系の最新バージョンにアップデート

composer self-update --2

バージョン確認

composer -vコマンドでバージョンを確認しましょう。

$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.x.x

使用するPHPバージョンを指定

これを指定することで、指定したPHPバージョンに対応したライブラリのバージョンがインストールされます。

composer config platform.php 8.0.16

ライブラリのアップデート

composer.json のあるディレクトリに移動して以下のコマンドを実行してください。

# 【非推奨】全ライブラリをアップデート
composer update

# ライブラリを指定
composer update guzzlehttp/guzzle

※ 注意

composer updateコマンドのみでアップデートした場合、アップデートする必要がないライブラリまでアップデートされてしまいます。できる限りライブラリを指定してアップデートしましょう。

Composerをつかう

Composerを使用する場合、共通でホームディレクトリ等にインストールし各プロジェクトから読み込むのも可能ではありますが、そのプロジェクトでどんなパッケージを使用しているのかわからなくなってしまうので、毎回プロジェクトディレクトリの直下にインストールしましょう。

パッケージのインストール方法は2通りあります。

  1. composer requireコマンドでインストール
    • 既にいくつかのパッケージをインストールしており、追加でパッケージをインストールする場合
  2. composer.jsonにパッケージ名とバージョンを記述してcomposer install
    • 新規プロジェクトで複数のパッケージを予め指定してインストールする場合

LINE Messaging API SDK for PHP の場合

composer require linecorp/line-bot-sdk

> index.php

$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);

$response = $bot->replyText('<reply token>', 'hello!');

if ($response->isSucceeded()) {
    // Succeeded
    echo 'Succeeded!';
} else {
    // Failed
    echo $response->getHTTPStatus() . ' ' . $response->getRawBody();
}
exit();

コメント