Home > NDO::Weblog

NDO::Weblog

  • 2011-07-29 (金)
  • PHP版 List_RubyLike


    PHP で遊んでいます。

    練習がてら、以前に作った List::RubyLike (http://github.com/naoya/list-rubylike) という Perl モジュール *1 の PHP での実装を作ってみました。



    <?php
    require_once 'List/RubyLike.php';

    echo LR(array("foo", "bar"))
    ->push("baz", "piyo")
    ->map(function ($v) { return strtoupper($v); })
    ->join(", ") . "\n";

    echo LR(range(1, 5))
    ->grep(function ($n) { return $n % 2 == 0; })
    ->map(function ($n) { return $n * $n; })
    ->sum() . "\n";
    ?>

    とすると



    % php example.php
    FOO, BAR, BAZ, PIYO
    20

    となります。配列周りの関数をラップしてメソッドチェインで呼べるメソッドを追加するクラスです。


    テストは Perl の Test::More ライクなテストができるという、Symfony の "Lime Testing Framework を使ってみました。



    <?php
    require_once 'lib/lime.php';
    require_once 'List/RubyLike.php';

    $t = new lime_test();

    $list = LR(array(2, 4, 6, 8, 10));

    $t->ok($list);
    $t->is($list->length(), 5);
    $t->is($list->first(), 2);
    $t->is($list->last(), 10);
    $t->is($list->sum(), 30);

    と Test::More のように書けて


    f:id:naoya:20100905135138p:image


    と色付で出力されます。良いですね。


    習作なので、実装してないメソッドがちらほらありますがとりあえずこんなところで。PHPの作法周りがまだまだ分からないので、おかしなところとか教えてください。




    *1:CPAN にこれを取り込んでもらった List::Rubyish (http://search.cpan.org/dist/List-Rubyish/) があります




[Powered by nuwaa-jyuku.com]

Home > NDO::Weblog

Search
Feeds

Page Top