カテゴリ: PHP
記事投稿日: 2017年2月16日
PHP で名前空間を使うようになると遭遇するエラーかと思います。
namespace の宣言の前で require で外部ファイルを読んでいたのが原因でした。
公式のドキュメントによりますと、
「名前空間を含むファイルでは、他のコードより前にファイルの先頭で名前空間を宣言しなければなりません。 ただし declare キーワードは例外です。」とちゃんと書かれています。
ちなみに、BOM コードがありになっていても、同じエラーが出るようです。
サーバサイドを書くなら BOM コードなしは基本ですね。
また、公式の最初に書かれていますが、
「PHP のコードならなんでも名前空間に含めることができますが、 実際に名前空間の影響を受けるのはクラス (抽象クラスやトレイトを含む) とインターフェイス、関数、そして定数だけです。」とのこと。
なるほどです。
require で読み込んだものは影響を受けない、と。
declare が分からないので、時間があったらまた勉強です。。
コメントを残す