teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

--optimize オプションについて追記しました。

2019/07/02 11:18

投稿

Eggpan
Eggpan

スコア3297

answer CHANGED
@@ -1,1 +1,14 @@
1
- クラス名が`Sample¥sampleClass`なので、ファイル名が`Classes/sampleClass.php`でないとオートローダの対象にならないかと思います。ファイル名とクラス名は合わせる必要があります。
1
+ クラス名が`Sample¥sampleClass`なので、ファイル名が`Classes/sampleClass.php`でないとオートローダの対象にならないかと思います。ファイル名とクラス名は合わせる必要があります。
2
+
3
+ ---
4
+ 追記
5
+ `composer dump-autoload --optimize` すると、composer.jsonのautoloadに書いたディレクトリ内を
6
+ 全て読みにいって、`vendor/composer/autoload_classmap.php`を生成するようです。
7
+ 手元の環境でためすと、autoloadに定義したディレクトリ内であれば、PSR-4準拠していないパスでもクラスマップ配列は作成されました。
8
+
9
+ `autoload_classmap.php`が存在することで、毎回個別にファイルチェックすることをスキップすることができるようです。
10
+ `autoload_classmap.php`に定義されていないものは(最適化レベルによりますが)PSR-4準拠のオートローダが動作します。
11
+ PSR-4の準拠の場合、クラス名からファイルを特定するため、namespaceがディレクトリ、クラス名がファイル名と対になるように定義する必要があります。
12
+
13
+ 最適化については公式サイトにも詳しく書かれていました。
14
+ [Autoloader Optimization - Composer](https://getcomposer.org/doc/articles/autoloader-optimization.md)

1

ファイル名のぶぶんがwindows表記になっていたので修正しました。

2019/07/02 11:18

投稿

Eggpan
Eggpan

スコア3297

answer CHANGED
@@ -1,1 +1,1 @@
1
- クラス名が`Sample¥sampleClass`なので、ファイル名が`Classes¥sampleClass.php`でないとオートローダの対象にならないかと思います。ファイル名とクラス名は合わせる必要があります。
1
+ クラス名が`Sample¥sampleClass`なので、ファイル名が`Classes/sampleClass.php`でないとオートローダの対象にならないかと思います。ファイル名とクラス名は合わせる必要があります。