第10章 オブジェクト指向構文 / 第2回 模擬試験
PHPの名前空間に関する次の記述のうち、誤っているものはどれか。
名前空間は`namespace`キーワードでファイルの先頭付近で宣言する。
異なる名前空間であれば、同名のクラスを定義できる。
`use`キーワードでクラスを別名(エイリアス)でインポートできる。
名前空間を使う場合、ファイル内で複数回`namespace`宣言を行うのが一般的である。
正解
解説
1つのPHPファイルにつき、通常は`namespace`宣言を1回だけファイルの先頭付近に記述します(波括弧を使えば1ファイルに複数の名前空間ブロックを書くこと自体は文法上可能ですが、可読性の観点から一般的ではなく推奨されません)。「複数回行うのが一般的である」という記述は誤りです。
他の選択肢が正しい理由は次の通りです。
・`namespace AppModels;`のように、ファイルの先頭(`<?php`の直後)付近で名前空間を宣言します。
・異なる名前空間に属していれば、`AppModelsUser`と`AppApiUser`のように同名の`User`クラスを共存させられます。
・`use AppModelsUser as ModelUser;`のように、`use ... as ...`でインポートするクラスに別名を付けられます。
例:
```
namespace AppModels;
use AppContractsExportable as ExportContract;
class User implements ExportContract {}
```
(参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.9節 名前空間 p.569〜577)