code: private static function compareObjects($var1, $var2)
      {
          if ($var1 instanceof Comparable) {
              return $var1->compareTo($var2);
          }
          if ($var2 instanceof Comparable) {
              return $var2->compareTo($var1) * (-1);
          }
          $str1 = self::dump($var1);
          $str2 = self::dump($var2);
          return strcmp($str1, $str2);
      }
docs: 引数のオブジェクトを比較します.
  引数のうち, 少なくとも一方が {@link Comparable} を実装していた場合,
  そのオブジェクトの compareTo の結果を返します.
  それ以外の場合は var_dump の結果を文字列比較して大小を判定します.
  
  @param  mixed $var1
  @param  mixed $var2
  @return int