- 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 のように書けて
と色付で出力されます。良いですね。
習作なので、実装してないメソッドがちらほらありますがとりあえずこんなところで。PHPの作法周りがまだまだ分からないので、おかしなところとか教えてください。
- Newer: Life is beautiful
- Older: NDO::Weblog
