PHP 8'de scope (kapsam), bir değişkenin, fonksiyonun veya diğer yapıların nerede erişilebilir olduğunu belirler. PHP'de dört temel kapsam türü vardır: global, local (yerel), static ve function parameter (fonksiyon parametresi) kapsamları. Ayrıca, closure yapılarında kullanılan use anahtar kelimesi gibi bazı gelişmiş kapsam konuları da bulunmaktadır.
1. Global Kapsam
Global kapsam, betiğin en üst seviyesinde tanımlanan değişkenlerdir. Bu değişkenler, fonksiyonların dışında tanımlandığında globaldir. Fonksiyonlar varsayılan olarak bu değişkenlere doğrudan erişemez; erişmek için global
anahtar kelimesi veya $GLOBALS
süper globali kullanılır.
Örnek:
$isim = "PHP"; // Global değişken
function isimYaz(
) {
global $isim; // Global değişkene erişim sağlanıyor
echo $isim;
}
isimYaz(); // "PHP" çıktısını verir
$GLOBALS
Süper Globali Kullanımı:
$isim = "PHP";
function isimYaz(
) {
echo $GLOBALS['isim']; // Global değişkene erişim sağlanıyor
}
isimYaz(); // "PHP" çıktısını verir
2. Yerel (Local) Kapsam
Bir fonksiyon veya metodun içinde tanımlanan değişkenler, yerel (local) kapsamda olur. Bu değişkenler, sadece tanımlandıkları fonksiyonun içinde erişilebilir. Fonksiyon dışında erişilemezler.
Örnek:
function merhaba(
) {
$isim = "PHP"; // Yerel değişken
echo $isim;
}
merhaba(); // "PHP" çıktısını verir
echo $isim; // Hata! $isim değişkeni global değil, fonksiyon dışında tanımlı değil
3. Static Kapsam
PHP'de bir değişkenin fonksiyonlar arasında kalıcı olmasını sağlamak için static
anahtar kelimesi kullanılır. static
değişkenler, fonksiyon sonlandırıldığında değerini kaybetmez, bir sonraki çağrıldığında önceki değeriyle devam eder.
Örnek:
function sayici(
) {
static $sayi = 0; // Değeri sadece ilk seferde atanır
$sayi++;
echo $sayi;
}
sayici(); // 1 çıktısını verir
sayici(); // 2 çıktısını verir
sayici(); // 3 çıktısını verir
Bu örnekte, $sayi
değişkeni, fonksiyon her çalıştığında kaldığı yerden devam eder.
4. Fonksiyon Parametreleri (Function Parameters)
Bir fonksiyonun parametreleri, fonksiyon çağrıldığında o parametrelerin değerlerini yerel olarak alır. Parametreler, fonksiyonun içinde tanımlandıkları için yerel kapsamda sayılır.
Örnek:
function toplama(
$a, $b
) {
return $a + $b; // Parametreler yerel kapsamda
}
echo toplama(2, 3); // 5 çıktısını verir
5. Closure ve use
Anahtar Kelimesi
PHP'de closure (anonim fonksiyonlar), kendi kapsamlarına sahiptir. Ancak closure içinde bir dış değişkene erişmek için use
anahtar kelimesi kullanılır.
Örnek:
$mesaj = "Merhaba";
$anonimFonksiyon =
function(
) use (
$mesaj
) {
echo $mesaj;
};
$anonimFonksiyon(); // "Merhaba" çıktısını verir
use ($mesaj)
ifadesi ile closure, dışarıdaki $mesaj
değişkenine erişim sağlar.
6. Global ve Yerel Kapsamın Birlikte Kullanımı
Fonksiyonlar hem global hem de yerel değişkenlerle etkileşime geçebilir, ancak bu, global değişkenlere doğrudan erişim sağlanmadığından dikkatli yapılmalıdır.
Örnek:
$globalDegisken = "Dünya";
function fonksiyon(
) {
$yerelDegisken = "Merhaba";
global $globalDegisken;
echo "$yerelDegisken, $globalDegisken!";
}
fonksiyon(); // "Merhaba, Dünya!" çıktısını verir
7. Superglobals (Süperglobal Kapsam)
PHP'de bazı özel değişkenler global kapsamda her yerden erişilebilir. Bunlara süperglobal değişkenler denir ve $GLOBALS
, $_POST
, $_GET
, $_SESSION
, $_COOKIE
, vb. gibi önceden tanımlanmıştır.
Örnek:
$_GET['isim'] = "PHP";
function getIsim(
) {
echo $_GET['isim']; // Süperglobal değişkene her yerden erişim sağlanır
}
getIsim(); // "PHP" çıktısını verir
Sonuç
PHP 8'de kapsam yönetimi, değişkenlerin hangi bölgelerde geçerli olduğuna odaklanır. Fonksiyonlarda kullanılan değişkenler, fonksiyon parametreleri ve global değişkenler farklı kapsam kurallarına tabidir. static
, global
, ve use
gibi yapılarla kapsamı daha karmaşık durumlarda kontrol etmek mümkündür.