ラベル マジックメソッド の投稿を表示しています。 すべての投稿を表示
ラベル マジックメソッド の投稿を表示しています。 すべての投稿を表示

2013年3月24日日曜日

__invoke

PHP5.3以降で使用可能な__invokeでは、
クラスオブジェクトが関数として呼ばれた場合の動作を決めることができます。

サンプルコード 実行結果
int(5)
果たしてクラスオブジェクトを関数として呼び出すことがあるのでしょうか?
一意な関数名も付けられませんし、分かりにくいだけのような気がします。

__toString

__toStringでクラスを文字列に変換された時の動作を決めることができます。

サンプルコード 実行結果
A
クラスを文字列として変換すること自体がまず無いでしょうし、
__CLASS__とでもしておくのが妥当なのではないでしょうか。

2013年3月23日土曜日

オーバーロード

PHPのオーバーロードは、動的にメンバ変数やメンバ関数を作成する機能を指します。

オーバーロードメソッドが起動するのは、
宣言されていないプロパティやメソッドを操作しようとしたときです。

また、現在のスコープからはアクセス不能なプロパティやメソッドを
操作しようとしたときにも起動します。

以下にその例を示します。

サンプルコード 実行結果
set a to 1
get a
1

Is a set?
bool(true)
Unset a
Is a set?
bool(false)

get _p

Notice: Undefined property via __get(): _p in 
C:\xampp\htdocs\test.php on line 51 in 
C:\xampp\htdocs\test.php on line 27
と、このように動的にメンバ変数を作成したり、取得・削除も行うことができました。
また、外部からアクセス不可能なメンバ変数にアクセスした時も
オーバーロードメソッドが実行されました。

いざ私の場合に置き換えてみますと有効な使い道は思いつかないのですが、
知っておいて損することはないので覚えておきたいです。