PHPの変数の有効範囲(スコープ)について


PHPのいいところといえばテキトーに書いちゃっても動いちゃうところですよね。
ただこれにはちょっと怖い面もあるのです。
入口が広くなってしまい、予想外の動作によるバグの可能性が上がっちゃうんです。
私は昔とりあえず動けばいいと思ってテキトーにやってました(笑)
こういう方って意外といると思うんですよね。
ってなことで意外とおろそかにしやすい部分に目を向けていこうかなと。
今回のテーマは変数のスコープです。

スコープって?

スコープとはスクリプト内の変数の有効範囲のことです。
スクリプト全体のグローバルスコープ、関数の中のみのローカルスコープがあります。
具体的にはこんな感じです。
変数$aの最初の方をグローバル変数、関数hoge()内の$aをローカル変数と言います。
$aという名前は一緒でも全然別物というわけです。
これをみると関数内でもグローバル変数を使いたいなぁとか思ったりしませんか?

こんな風にグローバル変数であることを宣言してあげればオッケーです。

静的変数について

他にも変数には種類があり、静的変数というものがあります。
まずは下の結果を見てみましょう。

ここで$aはローカル変数ですよね。
関数hoge()は何回呼び出してもずっと同じ結果を表示します。
hoge()は呼び出されるたびに$aを初期化して、処理後に破棄しているんです。
$aの結果を取っておきたいという場合に登場するのが静的変数です。
グローバル変数の時のように静的変数であることを宣言してみましょう。

いかがでしょうか?
静的変数のおかげで関数の処理終了後でも$aのデータが残っています。
一点気をつけて欲しいのは、静的変数はローカル変数だということです。

最後に

いかがでしたでしょうか。
変数についてちょっとまとめてみました。
基礎的なことですが、スコープは大切な概念なので理解を深めていきましょう。
以上tkでした。

ではでは

ブログランキング
人気ブログランキングへ

tk

こんにちはtkです。長いモラトリアムを経て現在は無職。寝ながらお金を稼げるシステムを作れないかと夢想中。。。。 PHP、Ruby、Javaなんかをいじってたりして、Scala勉強中。趣味は映画・海外ドラマ・読書です。何かオススメあれば是非!

あわせて読みたい

コメントを残す

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