元ネタ
rubyで世界のナベアツさんのネタを実装してテストを書く - Qiita
これを書いたあとPHPでも書きたくなりやってみました。
テストは書いてません。
実行したらrubyでやったものと同じように出力できたのでよしとします。
仕様
最初に「これから面白いことつまりオモローなことをします」という
1から40まで数を数える
3がつく数字のときアホになる
3の倍数のときアホになる
5の倍数のとき犬になる(3と5の倍数なら犬になる)
最後に「オモロー」という
omoro_class.php
<?php
class Omoro
{
  const TSUKAMI = "これから面白いことつまりオモローなことをします";
  const OCHI = "オモロー";
  const TSUJO_KAO_MOJI = "( ・`ω・´)";
  const AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡";
  const DOG_KAO_MOJI = "∪・ω・∪";
  // ネタ
  public function main($max_kazu = 40)
  {
    $this->speak(self::TSUKAMI);
    for ($figure = 1; $figure <= $max_kazu; $figure++) {
      sleep(1);
      $kao_moji = $this->verification($figure);
      $serif = $this->make_serif($figure, $kao_moji);
      $this->speak($serif);
    }
    $this->speak(self::OCHI);
  }
  // セリフを作る
  public function make_serif($figure, $kao_moji)
  {
    return $figure . $kao_moji;
  }
  // 判断する
  private function verification($figure)
  {
    if ($figure % 5 == 0) {
      return self::DOG_KAO_MOJI;
    }
    if ($figure % 3 == 0 || strpos($figure, '3') !== false) {
      return self::AHO_KAO_MOJI;
    }
    return self::TSUJO_KAO_MOJI;
  }
  // 話す
  private function speak($serif)
  {
    echo $serif . "\n";
  }
}
$omoro = new Omoro();
$omoro->main(40);
テスト
テストも少しだけ書いた。
omoroTest.php
<?php
use PHPUnit\Framework\TestCase;
require('./omoro_class.php');
class omoroTest extends TestCase
{
  const TSUKAMI = "これから面白いことつまりオモローなことをします";
  const OCHI = "オモロー";
  const TSUJO_KAO_MOJI = "( ・`ω・´)";
  const AHO_KAO_MOJI = "ʅ( ՞ਊ՞)ʃ≡";
  const DOG_KAO_MOJI = "∪・ω・∪";
  public function testMakeSerif1()
  {
    $omoro = new Omoro();
    $serif = $omoro->make_serif(1, self::TSUJO_KAO_MOJI);
    $this->assertSame('1( ・`ω・´)', $serif);
  }
  public function testMakeSerif3()
  {
    $omoro = new Omoro();
    $serif = $omoro->make_serif(3, self::AHO_KAO_MOJI);
    $this->assertSame('3ʅ( ՞ਊ՞)ʃ≡', $serif);
  }
  public function testMakeSerifInu()
  {
    $omoro = new Omoro();
    $serif = $omoro->make_serif(5, self::DOG_KAO_MOJI);
    $this->assertSame('5∪・ω・∪', $serif);
  }
  public function testMakeSerif33()
  {
    $omoro = new Omoro();
    $serif = $omoro->make_serif(33, self::AHO_KAO_MOJI);
    $this->assertSame('33ʅ( ՞ਊ՞)ʃ≡', $serif);
  }
}

