読み込み中...

PHPグローバル変数完全ガイド!初心者から上級者まで10の重要ポイント

PHPグローバル変数完全ガイド PHP
この記事は約10分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

皆さんこんにちは、今日はPHPの「グローバル変数」について一緒に学びましょう。

この記事を読めば、グローバル変数の使用方法やそれに伴う注意点、対処法、さらにはカスタマイズ方法までを理解することができます。

具体的なサンプルコードを交えながら、10の重要ポイントで説明していきます。それでは一緒に学んでいきましょう。

●PHPとグローバル変数について

○PHPとは

PHPは、Webサイトの開発に頻繁に使用されるプログラミング言語の一つです。

特にサーバーサイドの開発に優れており、HTMLと組み合わせて動的なWebページを作成することが可能です。

○グローバル変数とは

グローバル変数とは、プログラム全体からアクセス可能な変数のことを指します。

一般的に、関数内で定義された変数はその関数内でしか使えませんが、グローバル変数はどの関数からでも参照や変更が可能です。

●PHPのグローバル変数の使い方

○グローバル変数の宣言方法

PHPでは、関数の外で変数を宣言することでグローバル変数として扱うことができます。

例えば次のように記述します。

<?php
$globalVar = "Hello, World!"; // グローバル変数の宣言
?>

この例では、$globalVarというグローバル変数を宣言し、文字列”Hello, World!”を代入しています。

○サンプルコード1:グローバル変数の基本的な使用

では、次に具体的にグローバル変数をどのように使用するか見ていきましょう。

<?php
$globalVar = "Hello, World!"; // グローバル変数の宣言

function showGlobalVar() {
    global $globalVar; // グローバル変数を関数内で使う宣言
    echo $globalVar;  // グローバル変数の内容を出力
}

showGlobalVar(); // 関数を呼び出し、グローバル変数の内容を出力
?>

このコードでは、まずグローバル変数$globalVarを宣言し、”Hello, World!”という文字列を代入しています。

次にshowGlobalVarという関数を定義し、その中でglobalキーワードを使ってグローバル変数$globalVarを関数内で使用できるようにしています。

そして、関数内で$globalVarの内容をechoを使って出力しています。

最後にshowGlobalVar関数を呼び出し、グローバル変数の内容が出力されるようにしています。

○サンプルコード2:関数内からグローバル変数を利用する方法

PHPでは、$GLOBALS配列を用いて関数内からグローバル変数を直接参照することも可能です。

<?php
$globalVar = "Hello, World!"; // グローバル変数の宣言

function showGlobalVar() {
    echo $GLOBALS['globalVar']; // $GLOBALS配列を使ってグローバル変数を参照
}

showGlobalVar(); // 関数を呼び出し、グローバル変数の内容を出力
?>

このコードでは、globalキーワードを用いる代わりに、$GLOBALS配列を用いて関数内から直接グローバル変数$globalVarを参照しています。

そしてその内容を出力しています。

○サンプルコード3:$GLOBALS配列を使ったグローバル変数の利用

$GLOBALS配列を用いたグローバル変数の利用例を紹介します。

<?php
$globalVar1 = "Hello,";
$globalVar2 = " World!";

function combineGlobalVars() {
    echo $GLOBALS['globalVar1'] . $GLOBALS['globalVar2']; // $GLOBALS配列を使って複数のグローバル変数を結合
}

combineGlobalVars(); // 関数を呼び出し、結合したグローバル変数の内容を出力
?>

このコードでは、$globalVar1$globalVar2という二つのグローバル変数を定義し、それぞれに文字列を代入しています。

そしてcombineGlobalVars関数内で、これら二つのグローバル変数を$GLOBALS配列を用いて参照し、その内容を結合して出力しています。

●グローバル変数の注意点と対処法

○グローバル変数の利用に伴う問題点

PHPのグローバル変数は便利な一方で、適切に管理しないといくつかの問題が生じる可能性があります。

例えば、グローバル変数はプログラム全体からアクセス可能なため、予期せぬ場所で変更が加えられると、それが影響する範囲が広範であるため、バグの原因となりやすいです。

また、グローバル変数を多用するとコードの可読性が下がり、メンテナンスが困難になる可能性もあります。

○対処法

グローバル変数の問題点に対処するための主な方法は二つあります。一つ目は、グローバル変数の使用を最小限に抑えることです。

必要な場合以外は、関数やクラスの内部で変数を宣言し、それを使用することが推奨されます。

二つ目は、グローバル変数を使用する場合でも、その使用を制限することです。

つまり、グローバル変数を読み取り専用にしたり、特定の関数やクラスからのみ変更可能にするなど、アクセスを厳密に制御することが重要です。

●グローバル変数のカスタマイズ方法

グローバル変数は、プログラム全体で利用できるため、適切にカスタマイズすることでより強力なツールとなります。

例えば、グローバル変数を使って一部の設定やデータを全体で共有したり、プログラムの流れを制御したりすることができます。

しかし、グローバル変数をカスタマイズする際には、その影響範囲が大きいため、予期せぬ副作用を避けるためには十分な注意が必要です。

特に、既存のグローバル変数の値を変更する場合や、新たなグローバル変数を追加する場合には注意が必要です。

○サンプルコード4:グローバル変数をカスタマイズする方法

次に、グローバル変数をカスタマイズする一例として、一つのグローバル変数を複数の関数で使用し、その値を変更するサンプルコードを見てみましょう。

<?php
$globalVar = 0; // グローバル変数の初期化

function incrementGlobalVar() {
    $GLOBALS['globalVar']++; // グローバル変数をインクリメント
}

function showGlobalVar() {
    echo $GLOBALS['globalVar']; // グローバル変数の値を表示
}

incrementGlobalVar(); // グローバル変数をインクリメント
showGlobalVar(); // グローバル変数の値を表示
?>

このコードでは、グローバル変数$globalVarを使って整数値を保存し、その値をincrementGlobalVar関数で増加させています。

その後、showGlobalVar関数でその値を出力しています。

ここでのポイントは、同一のグローバル変数を複数の関数で共有し、その値を更新している点です。

このようにグローバル変数を利用することで、異なる関数間でデータを共有することが可能となります。

●グローバル変数の応用例

PHPのグローバル変数は、さまざまな場面でその能力を発揮します。

ここでは、具体的な応用例として3つのシナリオを挙げます。

それぞれのシナリオで、どのようにグローバル変数が活用できるのか、具体的なコードと共に解説します。

○サンプルコード5:簡単なカウンターを作る

最初の応用例は、簡単なカウンターの作成です。

この場合、グローバル変数は関数をまたいで値を共有するのに便利なツールとなります。

グローバル変数を用いてカウンターの値を増やす例を紹介します。

<?php
$counter = 0; // カウンターの初期化

function incrementCounter() {
    $GLOBALS['counter']++; // カウンターを増やす
}

function showCounter() {
    echo $GLOBALS['counter']; // カウンターの値を表示
}

incrementCounter(); // カウンターを増やす
incrementCounter(); // カウンターをさらに増やす
showCounter(); // カウンターの値を表示
?>

このコードでは、グローバル変数$counterを使ってカウンターの値を保持し、incrementCounter関数でその値を増加させています。

最後に、showCounter関数でカウンターの現在値を出力しています。

ここでは、グローバル変数の持つスコープを越えて値を共有する能力を活用しています。

○サンプルコード6:セッション管理に利用する

次の応用例は、セッション管理です。

Webアプリケーションでは、ユーザーごとにセッション情報を保持する必要があります。

このような場合にも、グローバル変数は非常に便利です。セッション情報を管理する例を紹介します。

<?php
session_start(); // セッションの開始

function setSessionValue($key, $value) {
    $_SESSION[$key] = $value; // セッションに値をセット
}

function getSessionValue($key) {
    return $_SESSION[$key]; // セッションから値を取得
}

setSessionValue('username', 'John Doe'); // セッションに値をセット
echo getSessionValue('username'); // セッションから値を取得
?>

ここでは、$_SESSIONという特殊なグローバル変数を使っています。

この変数は、PHPのセッション機能と連動しており、セッション情報を保存するのに適しています。

このコードでは、setSessionValue関数でセッション情報をセットし、getSessionValue関数でセッション情報を取得しています。

○サンプルコード7:データベース接続情報の共有

最後の応用例は、データベース接続情報の共有です。

複数の関数やクラスでデータベース接続を共有する必要がある場合、グローバル変数はその情報を保持するのに役立ちます。

<?php
$dbConnection = null; // データベース接続情報の初期化

function connectToDatabase($hostname, $username, $password, $database) {
    $GLOBALS['dbConnection'] = new mysqli($hostname, $username, $password, $database); // データベース接続
}

function closeDatabaseConnection() {
    $GLOBALS['dbConnection']->close(); // データベース接続のクローズ
}

connectToDatabase('localhost', 'user', 'pass', 'dbname'); // データベース接続
// データベース操作
closeDatabaseConnection(); // データベース接続のクローズ
?>

ここでは、データベース接続を表すオブジェクトをグローバル変数$dbConnectionに保存しています。

connectToDatabase関数でデータベースに接続し、その接続情報を$dbConnectionにセットします。

そして、データベース操作が終わったら、closeDatabaseConnection関数でデータベース接続をクローズします。

このように、データベース接続情報をグローバル変数で管理することで、それを必要とする全ての部分で共有できます。

まとめ

本記事では、PHPのグローバル変数について、その基本的な使用方法からカスタマイズ方法、具体的な応用例まで詳しく解説しました。

グローバル変数は、スコープを超えて値を共有するための強力なツールです。

ただし、適切に使用しないとコードの可読性や保守性を低下させる可能性もあります。

そのため、グローバル変数を使用する際には、その利点と欠点を理解し、適切な使用法を心掛けることが重要です。

また、この記事で紹介した具体的な応用例を通じて、グローバル変数がどのように役立つのかを具体的に理解できたことでしょう。

これらの例は、グローバル変数を使う際の参考になることを期待しています。

これで、あなたもPHPのグローバル変数についての基本的な知識をしっかりと身につけることができましたね。

この情報を元に、より良いPHPコードを書くための一歩を踏み出しましょう。