【PHP8.x】get_defined_vars関数の使い方

作成日: 更新日:

get_defined_vars関数は、PHPにおいて、現在のスコープで定義されているすべてのローカル変数を連想配列として取得する関数です。この関数は引数を必要とせず、呼び出された時点での実行コンテキストに存在する変数の情報を提供します。

戻り値の連想配列では、キー(配列の識別子)が変数の名前、値がその変数に格納されているデータとなります。例えば、$price = 100; $item_name = "Pen"; といった変数が定義されているスコープでこの関数を実行すると、['price' => 100, 'item_name' => 'Pen'] のような形式の配列が返されます。

主にプログラムのデバッグ作業を行う際や、スクリプト実行中に定義されている変数の種類とその内容を一覧で確認したい場合に非常に役立ちます。例えば、予期せぬ変数が定義されていないか、あるいは特定の変数が正しい値を持っているかを素早く把握することができます。これにより、コードの動作を理解し、問題の原因を特定する手助けとなります。PHPの内部関数として提供されており、プログラムの状態を把握するための基本的なツールの一つとして活用できます。

基本的な使い方

構文(syntax)

<?php
$variableA = 100;
$variableB = 'PHP';
$allDefinedVars = get_defined_vars();
?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

array

現在定義されているすべての変数を含む連想配列を返します。

サンプルコード

PHPのget_defined_vars()で全変数を取得する

<?php

/**
 * get_defined_vars() 関数の使用例
 *
 * この関数は、現在のスコープで定義されているすべての変数を連想配列として返します。
 * システムエンジニアを目指す初心者向けに、変数の定義とその取得方法を示します。
 */

// 現在のスコープでいくつかの変数を定義します
$userName = "山田 太郎";
$userId = 12345;
$isActive = true;
$projectList = ['Webサイト開発', 'モバイルアプリ開発', 'データベース管理'];

echo "--- 変数定義後、get_defined_vars() を使用 ---" . PHP_EOL;

// get_defined_vars() を呼び出して、現在のスコープで定義されているすべての変数を取得します
$definedVariables = get_defined_vars();

// 取得した変数の配列の内容を表示します
// print_r は、配列やオブジェクトを人間が読める形式で表示するのに便利です
print_r($definedVariables);

echo PHP_EOL . "--- 配列から特定の変数にアクセスする例 ---" . PHP_EOL;

// 取得した配列から特定の変数にアクセスすることもできます
echo "ユーザー名: " . $definedVariables['userName'] . PHP_EOL;
echo "ユーザーID: " . $definedVariables['userId'] . PHP_EOL;

?>

PHPのget_defined_vars()関数は、現在のプログラムの実行スコープ内で定義されているすべての変数を取得するために使用されます。この関数は引数を一切取らず、呼び出すだけで機能します。戻り値としては、変数名がキーとなり、その変数の現在の値がバリューとなる連想配列を返します。

サンプルコードでは、まず$userName$userId$isActive$projectListといった複数の変数を定義しています。その後、get_defined_vars()を呼び出すと、これらの変数すべてを含む連想配列$definedVariablesが生成されます。この配列には、例えば'userName' => '山田 太郎'のように、変数名が文字列のキーとして、その変数の値がバリューとして格納されます。print_r()関数でこの配列の内容を表示すると、定義した変数の名前とその値が一覧で確認でき、プログラムの特定の時点における変数の状態を簡単に把握できます。また、取得した連想配列から$definedVariables['userName']のように、特定の変数名(キー)を指定して、その値に直接アクセスすることも可能です。この関数は、プログラムのデバッグ時や、現在のスコープにどのような変数が存在するかを確認したい場合に非常に役立ちます。

get_defined_vars()は、関数が呼び出された「現在のスコープ」で定義されている全ての変数を連想配列として取得します。この関数は主にデバッグ時や変数の状態確認に有効で、プログラムのロジックを動的に制御する目的で使うことは一般的ではありません。

特に注意すべき点は、関数内で呼び出した場合、その関数スコープ内のローカル変数のみが取得されることです。また、$_GET$_POSTといったスーパーグローバル変数も含まれるため、本番環境で安易に出力すると意図せず機密情報が露呈するリスクがあります。そのため、この関数は開発中の変数確認用途に限定し、セキュリティリスクを考慮して本番環境での利用は極力避け、コードの可読性と安全性を優先しましょう。

【PHP8.x】get_defined_vars関数の使い方 | いっしー@Webエンジニア