Belajar PHP Part 38 : Variable Scope
- Di PHP, kita bisa membuat variable dimanapun yang kita mau
- Scope variable adalah dibagian mana saja sebuah variable bisa di akses
PHP memiliki tiga jenis variable scope :
- global
- local
- static
Global Scope
- Variable yang dibuat diluar function memiliki global scope
- Variable di scope global hanya bisa diakses dari luar function
- Artinya di dalam function, kita tidak bisa mengakses variable di global scope
$name = "Eko"; //gobal scopefunction sayHello(){echo $name . PHP_EOL; //error}sayHello();
Local Scope
- Variable yang dibuat di dalam function memiliki scope local
- Variable di scope local hanya bisa diakses dari dalam function itu sendiri
- Artinya variable tersebut tidak bisa diakses dari luar function ataupun dari function lain
function createName () {$name = "Eko"; //local scope}createName();echo $name . PHP_EOL;
Global Keyword
- Namun jika kita ingin mengakses variable diluar function (global scope) dari dalam function, kita bisa menggunakan kata kunci global
- Dengan menggunakan kata kunci global, maka kita bisa mengakses variable yang ada di global scope dari dalam function
$name = "Eko";
function sayHello(){
global $name; //global keyword
echo $name . PHP_EOL;
}
sayHello();
$GLOBAL Variable
- Selain menggunakan global keyword, setiap variable yang dibuat di global scope, secara otomatis akan disimpan di dalam array $GLOBAL oleh PHP
- Jadi kita bisa menggunakan $GLOBAL variable dengan key name variable nya dari dalam function jika ingin mengakses global variable
- $GLOBAL adalah variable yang bersifat superglobal, artinya bisa diakses dari scope manapun
$name = "Eko";function sayHello(){global $name; //global keywordecho $name . PHP_EOL;var_dump($GLOBALS);}sayHello();
atau
$name = "Eko";function sayHello(){global $name; //global keywordecho $name . PHP_EOL;echo $GLOBALS["name"] . PHP_EOL;}sayHello();
Static Scope
- Secara default local variable itu siklus hidupnya hanya sebatasa function nya dieksekusi
- Jika sebuah function selesai dieksekusi, maka siklus hidup local variable nya selesai
- PHP Memiliki scope bernama static
- Static scope hanya bisa di set ke local variable
- Saat kita membuat sebuah local variable menjadi static, maka siklus hidupnya tidak berhenti ketika sebuah function selesai dieksekusi
- Artinya jika function tersebut dieksekusi lagi, maka static variable tersebut akan memiliki value dari sebelumnya
Siklus Local Variable
function increment() {$counter = 1;echo "Counter = $counter" . PHP_EOL;$counter++;}increment();increment();increment();
Siklus Static Variable
function increment() {static $counter = 1;echo "Counter = $counter" . PHP_EOL;$counter++;}increment();increment();increment();