PHP
0
どのような問題がありますか?

投稿日

PHPで5の付く日曜日を出力するプログラム

実務で3ヶ月経過したので4ヶ月前に書いたのと同じものを作ってみました
↓↓Javaで5の付く日曜日を出力するプログラム
https://qiita.com/noczz/items/aa1caccf6aebc334b0f8

今見返すと酷いコードですね…
初心者なりに前よりも良いコードを書けるように考えてみました
実務ではPHPを触っていますのでPHPで書いてみました

プログラム要件

  • endと入力されるまで無限ループ
  • Enterキーを押すと1つずつ次の5のつく日曜日の年月日が表示される

<?php
const SPECIAL_DAYS = 5;

class BlarDateTime extends DateTime
{
    /**
     * Return Date in ISO8601 format
     *
     * @return String
     */
    public function __toString()
    {
        return $this->format('Y-m-d');
    }

    /**
     * SPECIAL_DAYSの付く日曜日を返す
     * 次の日曜日の日付にSPECIAL_DAYSが含まれていなければ再帰処理
     * @return String
     */
    public function getNextSpecialDays()
    {
        if (strpos($this->modify('next Sunday')->format('d'), SPECIAL_DAYS) == True) {
            return $this->format('Y-m-d');
        }
        return $this->getNextSpecialDays();
    }
}

echo '現在の日付から5のつく日曜日を表示します…'. PHP_EOL;
echo 'Enterキーを押すと次の日付を表示'. PHP_EOL;
echo 'endと入力するとループ終了'. PHP_EOL;

$date = new BlarDateTime();

while (true) {
    $input = trim(fgets(STDIN));
    if ($input == 'end') {
        return;
    }
    echo $date->getNextSpecialDays();
}
?>
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
noczz
プログラミング学習中の初心者 Java学習中

コメント

わざわざ再帰処理を使う必要は無いと思います。

<?php
const SPECIAL_DAYS = 5;

class BlarDateTime extends DateTime
{
  public function getNextSpecialDays()
  {
    while($this->modify('next Sunday')->format('d')[1] != SPECIAL_DAYS);
    return $this->format('Y-m-d');
  }
}

echo '現在の日付から5のつく日曜日を表示します…'. PHP_EOL;
echo 'Enterキーを押すと次の日付を表示'. PHP_EOL;
echo 'endと入力するとループ終了'. PHP_EOL;

$date = new BlarDateTime();

while (trim(fgets(STDIN)) !== 'end') {
  echo $date->getNextSpecialDays();
}
0
どのような問題がありますか?
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
0
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー