magic method

[PHP] : magic method

phpのマジックメソッドについて挙動を確認してみました。
とりあえずは代表的なもののみをピックアップ。

<?php

class MagicMethod {

private $data_ = array();

public function __construct() { echocall construct \n”; }

public function __destruct() { echocall destruct \n”; }

public function __get( $key ) { echocall _get \n”; return $this->data[ $key ]; }

public function _set( $key, $name ) { $this->data[ $key ] = $name; echocall __set \n”; }

public function toString() { return CLASS__; }

public function __call( $name, $arguments ) { $arg = implode(,” , $arguments ); echocall func class = $name arg = $arg \n”; }

}

//__construct $magic = new MagicMethod();

//__call $magic->magic(test’, array(arg1’, ‘arg2) );

//__set $magic->key =test’;

// __get echo $magic->key .\n”;

//__toString echo $magic .\n”;

//__destruct unset( $magic );

echoprocess is finished \n”;

以下は出力結果です。

call construct
call func class = magic  arg = test,Array
call __set
call __get
test
MagicMethod
call destruct
process is finished 

abstract static宣言

abstract staticの宣言がphpで出来ます。継承した子クラスでもstaticで呼び出すことが出来ます。

<?php

abstract class hoge { abstract static function foo (); }

class fuga extends hoge { static public function foo() { echoFoo \n”; }

}

fuga::foo();