✏️
PHPとJavaScriptのグローバル変数へのアクセスの違い
JavaScriptとPHPのグローバル変数へのアクセスについてハマったのでメモします。
JavaScriptにおけるグローバル変数へのアクセス
JavaScriptではグローバルスコープで宣言された変数(グローバル変数)には、どこからでもアクセス出来るようになっています。
下記コードのように関数の中からグローバル変数にアクセスすることは、もちろん可能です。
const num = 1;
function hoge() {
console.log(num); //グローバル変数のnumへアクセス可能
}
hoge(); // 1
PHPにおけるグローバル変数へのアクセス
PHPでもグローバル変数は存在しますが、JavaScriptと違って関数の中からグローバル変数にアクセスすることが出来ません。
下記のコードのように変数$numが定義されていないよ!と言われてしまいます。
<?php
$num = 1;
function hoge() {
echo $num; //Undefined variable '$num'
}
関数の中からグローバル変数にアクセスしたい場合は下記のように書くとエラーが出ません。
$num = 1;
function hoge() {
global $num;
echo $num;
}
hoge(); // 1
言語ごとにスコープの考えは違う
今回はJavaScriptとPHPのスコープの違いを理解していなかったがために、悩んでしまいました。
PHPはJavaScriptにぱっと見て書き方が似ているが、ちゃんとその特性を理解しないといけないと考えさせられました。
もし記載の内容に誤りがあればご教示いただけますと幸いです。。。
Discussion