Rubellum fly light

ほぼPHP日記

Countableの悪夢

count($obj);

ってサポートするべきなのだろうか、
とRubyのEnumerableをtraitとmix-inで実装してみるときに思ったのである。

<?php

trait Enumerable
{
  public function count()
  {
    return 2;
  }

  public function all() {}
  // 略                                                                         
  abstract public function each();
}

class Test
{
  use Enumerable;

  public function each() {}
}

class Test2 implements Countable
{
  use Enumerable;

  public function each() {}
}

$test = new Test;
echo count($test) . PHP_EOL; // => 1                                            

$test2 = new Test2;
echo count($test2) . PHP_EOL; // => 2

なお、実際に実装はしてない模様(ぇ