PHPの勉強メモ
2018年11月30日
PHPについての勉強メモです。
namespace(名前空間)
php5系の途中から利用可能になった仕様。
namespace ◯◯;
で名前空間を定義することで、同名のクラスや関数も定義して同時に読み込むことができる。
例えば異なる名前空間で同名のクラスが定義されている複数のライブラリを読み込んでから使用する場合は、
new 名前空間名\クラス名;
のようにして使うことができる。
use文での省略
名前空間は、
namespace ◯◯\◯◯\◯◯;
のように、サブディレクトリのような形式で使用することができる。
これが長くなると、
new ◯◯\◯◯\◯◯\クラス名;
のようなかんじで、記述が冗長になる。
記述が複数箇所になればなお冗長になる。
このため、use文を使うことで
use ◯◯\◯◯\◯◯ as A
のような形で宣言すれば
new A\クラス名;
のような形式で利用でき、記述が簡潔になる。
また、この宣言はいろいろな記述が可能で
use ◯◯\◯◯\◯◯\クラス名;
のような形式で宣言すれば
new クラス名のようなかんじでいきなり使用できる他、
use AB\CD\EF;
のような形式で、asを省略した場合
use EF\クラス名;
のような形式で記述が可能となる。
また、
use AB\CD;
のようなかんじで途中まで定義して
new CD\EF\クラス名;
のような使い方もできる。
また、これは、クラス名だけでなくメソッドを呼び出す場合も同様の手順で行うことができる。
::(スコープ定義演算子)
スコープ定義演算子は、クラスの静的プロパティやメソッドにアクセスする場合に使用する。
一般的な方法では、
クラス名->メソッド;
クラス名->プロパティ;
といった書き方がしますが、意味はこれと同じで
クラス名::メソッド;
クラス名::プロパティ;
といった書き方ができますが、前者は対象が動的な場合で、後者は静的であることを表しています。
どちらも実行結果は同じですが、プログラムの読み手が、アクセス先が静的で動的かが見ると分かるということです。