はじめに
PHPでextract()
関数を使ったとき、解説に
キーを変数として現在のシンボルテーブルにインポートします
と書かれていて、「シンボルテーブルって何?」と疑問に思いました。
そこで、少し深堀りしてみました。
シンボルテーブルとは?
- どんな変数が今使えるのかを管理している場所
- しかもグローバルスコープや関数スコープなど、それぞれのスコープごとに存在している
つまり、これまでよく耳にしていた「変数が使えるスコープ」という話も、
要するに「そのスコープのシンボルテーブルに登録されているかどうか」ということなんだ、と腑に落ちました。
普段、変数を定義しているときに「シンボルテーブルで管理されている」なんて意識したことはなかったので、今回仕組みを学べたのはすごく良い気づきでした。
気づきと学びまとめ
-
extract()
は「今のスコープのシンボルテーブルに変数を追加する」関数 - シンボルテーブルは「どんな変数が使えるか」をスコープごとに管理している
- スコープ=シンボルテーブルの範囲
感想
ちょっとした気づきかもしれませんが、
こういう知識が増えると、プログラムを書くときにデータの動きがイメージできるようになって、 思った通りにコードを動かせる感覚が少しずつ積み上がっていきます。
データの流れや動きをイメージできると僕はよりプログラミングが楽しく感じるので、
こういう小さな疑問を大切にして、これからも知識を積み重ねていこうと想います。