PHP

Composer を使って PSR-4 オートロードしている場合、composer.json は必要なくなる

投稿日:2018年1月11日 更新日:

PHP を使った開発でよく使う Composer に関するお話しです。

例えば、composer.json に以下のように記述して開発を行ったとします。

{
    ...
    "autoload": {
        "psr-4": {"App\\": "src/"}
    },
    ...
}

その後、以下のコマンドを実行するわけですが、

$ composer dump-autoload

実はこの時、vendor/composer/autoload_psr4.php にこの内容が書き込まれています。

この場合であれば、元々以下のような内容であった autoload_psr4.php が、

<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);

以下のように上書きされます。

<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'App\\' => array($baseDir . '/src'),
);

プログラムのエントリポイントとなる PHPファイルでは、vendor/autoload.phprequire で読み込んでオートロードしているはずですが、この中で vendor/composer/autoload_psr4.php も読み込まれているため、composer.json がなくても src/ 以下のクラスファイルは正常に読み込まれます。

このプログラムを誰かに渡す場合も、必ずしも composer.json を含めておく必要はないということになります。

関連

PHP

【PHP】Composer の使い方

2018.07.04

📂-PHP
-,

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Google App Engine

普通のPHPサイトをGAE(php72)上で実現する方法

普通のPHPサイトをGAE(php72)上で実現する方法について説明しています。

PHP

PHPで即時実行関数を使って名前空間を汚さない

JavaScript だとよく見るやり方なのですが、「即時実行関数を使って名前空間を汚さない」やり方って、PHP の場合はあまりやらないのでしょうか? PHPで関数を宣言すると、その名前はグローバル空 …

PHP

pecl install xxxx する際は、php -v と php-config –version が一致しているか確認してから行う

pecl install xxxx する際は、php -v と php-config –version が一致しているか確認してから行うとよいという話しです。

PHP

Ubuntu で 複数のバージョンの PHP を使う手順

目次1. はじめに2. 前提とする環境 3. PHP 7.2 を導入する手順手順1:リポジトリを追加するツールをインストール手順2:リポジトリを追加手順3:PHP 7.2 をインストール4. PHP …

PHP

PHPって何ができるの?

「PHPって何ができるか?」を知るために、最小限の PHP を使った Webページが Webブラウザにどんなデータを返すのか? を見ていきます。 スポンサードリンク 目次1. この記事が前提としている …