[プログラミング]ねえ、スコープって知ってる?

スコープ

プログラミングでのスコープとは、ある変数や関数が特定の名前で参照される範囲のこと。 ある範囲の外に置いた変数等は、通常、その名前だけでは参照できない。 このときこれらの変数はスコープ外である、「見えない」といわれる。

スコープ – Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97

コードサンプル

<?php
echo sayHello();
echo $hour;

function sayHello()
{
  $hour = date("H");
  if (5 <= $hour && $hour <= 10) {
      return "Good Moning!";
  }
  return "Hey Guys!";
}

関数sayHello()を呼び出すと、実行委時間によってあいさつの内容が変化します。

5時から10時までは”Good Moning!”。
それ以外の時間は”Hey Guys!”。

この関数はあいさつ文言だけの返却し、その判断基準となる「今何時?」の数値は返却しません。

変数$hourはsayHello()の中でのみ有効であって、関数の外では定義されていません。
これがスコープです。

3行目echo $hour;は定義されていない変数の参照のため、PHP Noticeが発生します。

関数の外でも、関数内の変数にアクセスできるとなると、、、
覚えていることがたくさんありすぎて、あっという間に頭がパンクしてしまいますね!

おまとめ

  • スコープとは、変数、関数にアクセスできる範囲
  • 小さいスコープでは変数名も短くすると吉