[PHP] : magic method
phpのマジックメソッドについて挙動を確認してみました。
とりあえずは代表的なもののみをピックアップ。
<?phpclass MagicMethod {
private $data_ = array();
public function __construct() { echo “call construct \n”; }
public function __destruct() { echo “call destruct \n”; }
public function __get( $key ) { echo “call _get \n”; return $this->data[ $key ]; }
public function _set( $key, $name ) { $this->data[ $key ] = $name; echo “call __set \n”; }
public function toString() { return CLASS__; }
public function __call( $name, $arguments ) { $arg = implode( “,” , $arguments ); echo “call 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 );
echo “process 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で呼び出すことが出来ます。
<?phpabstract class hoge { abstract static function foo (); }
class fuga extends hoge { static public function foo() { echo “Foo \n”; }
}
fuga::foo();