【ワードプレス】問い合わせフォームから届く、ひたすら迷惑なスパムメールを防ぐ為には?
僕的PHP備忘録第5弾。前回は変数を紹介しましたが変数の中にもちょっと変わった仕組みが存在します。これを分かっていないと思わぬエラーに陥る可能性があるのでしっかりと覚えておきましょう
変数のスコープ
スコープとは’範囲’のことを指します。よって変数のスコープは変数の範囲、変数を利用できる範囲という意味になります。変数を利用できる範囲とは何でしょうか?
そもそも変数というのは使える範囲が決まっております。スコープにはローカルスコープ、グローバルスコープがありそれぞれの変数をローカル変数、グローバル変数と呼びます。
後ほど紹介する関数というものを使用するとスコープを意識してコーディングをしないと思わぬエラーやバグが発生してしまいます。
<?php
$global = 'これはグローバル変数です';
function example() {
$local = 'これはローカル変数です';
echo $global;
echo $local;
}
example();
echo $local; //これはエラーになります
$globalはグローバル変数、$localはローカル変数、function example() はクラス定義になります。
クラス内で定義された変数はローカル変数と呼ばれ定義されたクラス内でしか使用できません。
よってクラス外で使用すると変数が定義されていないというエラーになります。
一方グローバル変数はクラスの中でもクラスの外でも使用することができます。
ですので意図しない変数の書き換えなどに注意しなければいけません。
スーパーグローバル変数
自分で定義する変数以外にもPHPが事前に設定している変数、スーパーグローバル変数というのもあります。【$_GET】【$_POST】【$_SESSION】などスコープを気にせず使用でき、これを使用することに検索機能やフォーム機能などの実装に役立ちます。
まとめ
変数を定義するときは「今定義している変数はどこまでスコープが効くか?」を意識することにより思わぬバグを減らしたり、ソースコードが読みやすくなりその後の運用がやりやすくなるなど得られるメリットは大きいです。
スコープを意識しバグを減らして素敵なプログラミングライフを送りましょう!