PHPで知らなかった書き方に出会って驚いた話

投稿日:

あ~わ~ただしい日々 知らぬ間に蝉しぐれも止んで.
というわけで1年の3/4が過ぎようとしています。まぁビックリ。

自分は生粋のペチパーで曲がりなりにもソースレビューをたまにはしているのですが最近ちょっと驚いたというか、へぇ~こんなふうにも書けるんやねという書き方に出会ったので記します。

驚いた書き方

大体イメージはこんな感じです。

class Hoge
{
    protected $records;

    protected $record;

    public function doSomething()
    {
        $this->records = $this->fetchHoge();

        foreach ($this->records as $this->record) {
            $this->hoge();
        }
    }

    protected function hoge()
    {
        // $this->record に対してなにかしたりする
        $this->piyo();
    }

    protected function piyo()
    {
        // $this->record に対してなにかしたりする
    }

    // こんな感じで$this->recordに対して何かする処理が至るところにあるずら
}

これのどこに驚いたかというと、ここな。

foreach ($this->records as $this->record) {
}

自分の今までの経験で言うと

foreach ($this->records as $record) {
    $this->record = $record;
}

こう書くのがふつうな気がするのです。
※上記例だと、引数に渡せばいいじゃんと思うかもしれませんが実際にはもっといろいろやっています

これを見たときは、う、ウソだろ? as $valueのところで$thisにセットできるなんて、、え、マジ?と二度見、三度見したのですが実際に動いているのですよ。

こんな書き方が出来ることを知っている人はいるのでしょうか。
何かメリットはあるのでしょうか。

自分がこの方法を取ることは無いと思うのですが、こういう書き方も出来るんやねっていう話でした。

余談

ちなみに自分は、関数内にいきなり$this->XXXがあると、こいつはどこで生まれて、どこで使われ、そしてどこにいくのか気になってしまうので、なるべく引数で渡せるところは渡せるように、プロパティは増やさないように(最近は)気をつけるようにしています。

終わり。

投稿日:
カテゴリー: PHP

作成者: shimabox

Web系のプログラマをやっています。 なるべく楽しく生きていきたい。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください