openpearでPHP_Objectというライブラリを公開しました
実用性はほとんどないライブラリですが。
以下説明。
openpearに書いてあるものほとんどそのままです。
サンプル
<?php require_once 'PHP/Object.php'; function p($data) { return PHP_Object::factory($data); } $array = p(array('foo', 'bar')); // Arrayオブジェクトを作成 $array->push('baz'); // array_pushのエイリアス $array->var_dump; // 引数がない場合、括弧は省略できる /* 出力結果 &array(3) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" } */ $array = p('Hello,World!')->replace('World', 'PHP') // WorldをPHPに置換、str_replaceのエイリアス ->echo // Hello,PHP! を出力 ->explode(',') // 「,」で分割し配列にして返す ->tap('rsort'); // rsortメソッドをコールし、自分自身を返す foreach ($array as $value) { $value->echo("\n"); // PHP!、Helloの順に出力 }
特徴
- 全てのPHP関数をメソッドとして呼び出せる
- 引数をとらないメソッドの括弧は省略できる
- Arrayオブジェクトは通常の配列型のようにforeachでのループや、[]を使ったアクセスができる
- echo、printなど、PHPの言語構造をメソッドとして呼び出せる
- メソッドの引数に、そのままPHP_Objectオブジェクトを渡すことができる
- メソッドが返す値は全てPHP_Objectオブジェクト(配列のキーや一部メソッドを除く)
- 戻り値がない(void)関数を、メソッドとして呼び出した時は、代わりに自分自身を返す
- Arrayオブジェクトからのメソッド呼び出し時にはメソッド名の「array_」を省略できる
- Stringオブジェクトからのメソッド呼び出し時にはメソッド名の、「str」と「str_」を省略できる
- valメソッドで、元の値を取得できる(Stringオブジェクトから呼び出した場合文字列、など)
- tapメソッドで第一引数にコールバックメソッド名を渡すと該当メソッド呼出し後、その戻り値ではなく自分自身を返す
元ネタは下の記事です。
ArrayObjectで遊んでみる - おぎろぐはてな
あとは型変換用メソッドなどのメソッド追加、クラス構造の改善などを行う予定。
※2008-12-14 サンプルが適切ではなかったので修正しました