WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

WordPressでハマりやすいPHPの変数のスコープ

はじめに

WordPressはWEBサイトを作るだけならプログラミング初心者でもできてしまう代物です。しかし、自分の作りたいようにカスタマイズをしたいのであればそうはいきません。HTML、CSS、JavaScript、PHP、MySQLなど多くのことを学ばなければなりません。今回は初心者がカスタマイズに挑戦し始めたときにハマりやすい変数のスコープについて触れようと思います!

スコープってなに??

スコープとは完結に言うと変数が生きれる範囲(有効範囲)です。その範囲のことをスコープと呼びます。

変数には2種類ある

変数にはローカル変数グローバル変数という2種類あります。
ローカル変数は{}で囲まれた関数内で宣言された変数のことで、ローカル変数のスコープをローカルスコープと呼びます。
グローバル変数は関数外で宣言された変数のことで、グローバル変数のスコープをグローバルスコープと呼びます。
変数の命名をする際など、この2種類を使いわけることが重要であり、それを気づかずにグローバル変数で同一の名前を作ったりすると重大なエラーが起きたりもします!!
グローバル変数を関数の内部で使用する場合はグローバル宣言を行います。グローバル宣言はglobal $変数名の形で定義をします。グローバル宣言は無制限で定義することが可能です。

スコープの例

$dog = "犬";

function sample() {
  global $dog;
  $cat = "猫";
  $bird = "鳥";
  echo "田中さんは". $dog ."と". $cat ."と". $bird ."を飼っている";
// =>田中さんは犬と猫と鳥を飼っている
}

echo $cat .'と'. $bird;
// =>error

上記の例でみると$dogがグローバル変数となり$catと$birdがローカル変数になります。
グローバル宣言をした$dogは{}の関数(function)外でありながら、関数内でも値が生きています。かくゆう、ローカルスコープをもつ$catと$birdは関数からでたところでは使えなくなっていますね!

他にも$GLOBALS(スーパグローバル)という宣言の仕方もありますが、基本てきにはglobalで大丈夫かと思います。

静的変数(static)

静的変数は関数内のローカルスコープに存在し、スコープ外で行われてもその値を失いません。
(必要になってくる場面)

<?php
function sample() {
  $a = 0;
  echo $a;
  $a++;
}
?>

このプログラムだと呼び出されるたびに$aが0になってしまうので、出力が0になってしまいます。この場合は変数$aを静的変数として宣言する必要があります。

<?php
function sample() {
  static $a = 0;
  echo $a;
  $a++;
}
?> 

このように静的関数(static)に宣言することによって、呼び出されても値を保持し続けてくれるようになります。
(注: staticは変数の値を代入する際につかうのでstatic $a = 1+2などの結果を返す代入はできません)

まとめ

今回は変数のスコープについて書きました。変数のスコープはプログラミング言語ごとに異なるのでPHPのスコープを理解していくことは重要になります。WordPressを使用する際もglobal宣言はよくつかうので覚えておきましょう!!!

関連記事

ページ上部へ戻る