version5.4以降に使える名前空間についてメモっとく
namespace A;
class A{
public static function xxx(){}
}
namespace B;
class A{
public static function yyy(){}
}
この場合namespaceAのAクラスと、namespaceBのAクラスということになる。
呼び出すときはuseキーワードを使う。
use A\A
この場合、これ以下でAクラスを呼び出したときはnamespaceAのAクラスのことを参照していることになる。
use A\B
こうすることで、namespaceAのBクラスを呼び出していることになる。
別名で呼び出す場合
use A\A as C
こうするとこれ以下で、C::xxx();としたとき、実施にはnamaspaceAのAクラスを参照していることになる。
use A\A as C
C::xxx();
//A::xxx();と同義
【namespaceを使う際はグローバルクラスなのかそのnamespace内のクラスなのかを意識する】
例えば、以下だとエラーになる。
namespace A
try{
//エラー構文
}catch(Exception $e){
echo $e->getMessage();
}
なぜなら、ここでいうExceptionクラスはnamespaceA内のものを指しているから。
\Exception
こうしないとエラーメッセージの入ったグローバルなExceptionクラスにアクセスしていないことになる。