Article

Python hack-a-thon #2にて一人でrhaco2

※ 商品リンクから購入されると少額の報酬が発生することがあります。

ま、こんなものもあったし。rhaco2やれってことだよね。

重要そうなcore.spl.Objectを読む

実はPHPを学ぶことっぽい。

  • self

    selfは自分自身のスタティックメソッド等を呼ぶときに使うものらしい。

    PythonやPerlではインスタンスが自分自身を表す名前として便宜的に使ってる同じ名前がPHPなのに$なしで出現する。

    ちなみに、スタティックに参照するときは::みたい。

  • clone

    オブジェクトの代入はシャローコピー。cloneを使えばディープコピーできる。

  • is_object

    引数がオブジェクト(stdClassから派生したもの?)かどうか判定する。

    phpのインタラクティブシェルで確認してみる。readline付きでコンパイルしてあればphpの宣言文はいらないらしいけど…

    連想配列はArrayだそうです。へーへーへー

  • method_exists

    module_existsというメソッドがrhaco2のObjectクラスに定義されていたので、これもrhaco2のものかと思ったら、標準関数だった。

    rhaco2のmodule_existsはこの関数に名前があわせてあるんだと思うけど、has_methodとかの方がわかりやすい気がするなー。

    カスなのでググったところ、スタティックメソッドの場合の例が乗ってるページがあるんだけど何を言いたいのか意味が分からなかったので追試。

    結局、スタティックメソッドでも同様になるということがいいたかったのか。

    なぜかvar_dumpしないと結果がプリントされなかった。なぜなんだ。

  • ReflectionClass

    リフレクションなクラス。一時変数名が$refになっててちょいときもい。ただそれだけ。

そろそろあきらめた

あきらめたというか、なんだか見てたらキモくて書きたくなった。 rhaco2楽しいよ><

  • uc

    ドキュメント代わりのdoctest(実行可能なドキュメントで各関数なりのコード中に記述されている)に出てきた。 UniqueClassの略(ラッパ)。 PHPにはdoctestなんて仕様はないのでほかのテストで生成したクラスとかぶらないように使うものだと思われる。 ユニークな名前でクラスを生成してるっぽい。

    こんな感じで使う

    ま、テスト以外では使うなといわれたよ。

  • func_annotation / var_annotation

    関数と変数にアノテーションできる仕組み。言語的にアノテーションできないので、少しあれな書き方になる。

    $aaaに$__aaa__でアノテーションしてる。typeを指定しておくと、$obj->aaa($arg)したときに型やとりうる値をチェックしてくれる。 __choices_ccc__は実行時にとりうる値を動的に指定したい場合に使うみたい。 typeの種類はset_class_memberメソッドを見れば書いてある。

  • __fm_attr__

    $objの$aaaに対してフォーマッティングしたい場合に、何も考えずに$obj->fmAaa()を呼び出すと、__fm_attr__というメソッドが呼び出される。 ただし、これはObjectクラスに以下のような定義箇所があり、個別の設定ができるようになっている。

    たとえば$aaaという変数に対してだけ特別な処理を行いたい場合には、次のようなメソッドを定義しておけばこっちが呼び出されるようになる(アクセサはよくわかってないから省いてる)

    ほかにもこれ系はいろいろあるので、Objectクラスを見ると楽しいはず。ちなみにprivateは動きが変わっても知らんそうだよ。他だって知らんだろうけど。

続きはFlowとDao

Prev Entry

Next Entry