第10章 オブジェクト指向構文 / 第1回 模擬試験
PHPの名前空間とオートロードに関する次の記述のうち、正しいものはどれか。
名前空間は、クラス名の衝突を防ぐために使用される。
`use`キーワードは、名前空間内のクラスをインポートするために使用される。
オートロードは、クラスが使用されたときに自動的にそのクラスファイルを読み込む仕組みである。
上記すべて
正解
解説
3つの記述はすべて正しいです。
・名前空間(`namespace`)は、同名のクラス・関数・定数が異なるライブラリ間で衝突するのを防ぐための仕組みです。
・`use`キーワードは、他の名前空間にあるクラスを現在のファイルにインポートし、完全修飾名を書かずに短い名前で参照できるようにします。
・オートロードは、`new`などでクラスが実際に使われた瞬間に対応するファイルを自動的に`require`する仕組みです。`spl_autoload_register()`で独自に実装することも、Composerが生成する`vendor/autoload.php`(PSR-4準拠)を使うこともできます。
例:
```
namespace AppModels;
use AppContractsExportable;
class Report implements Exportable {}
```
Composerを使う開発では、`composer.json`の`autoload.psr-4`設定に基づいて名前空間とディレクトリ構成を対応させておくと、`use`文を書くだけでオートロードが機能します。
(参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.9節 名前空間 / 10.10節 クラスの自動ローディング p.569〜585)