Menu

PHP Değişkenler: Tanımlama, Kapsam, global ve static

Bir PHP değişkeni $ ile başlar ve ona değer atanarak oluşturulur: $name = "Ada";. Tanımlama anahtar kelimesi ve sabit bir tür yoktur. Fonksiyonlar, siz içeri geçirmedikçe, global kullanmadıkça ya da yakalamadıkça dışarıdaki değişkenleri görmez; static ise bir değeri çağrılar arasında korur.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Bir PHP değişkeni $ ile başlayan bir addır ve ona bir değer atayarak oluşturursunuz: $name = "Ada";. Tanımlama anahtar kelimesi ve belirtilecek bir tür yoktur, çünkü türü değer belirler. Daha sonra farklı türde bir değer atayabilirsiniz.

Değişken adlandırma kuralları

Bir değişken adı $ ile başlar, ardından bir harf veya alt çizgi, ardından istediğiniz kadar harf, rakam veya alt çizgi gelir. ASCII dışındaki harfler de harf sayılır, bu yüzden $名前 geçerlidir; yine de ASCII adlar normdur. Adlar büyük/küçük harfe duyarlıdır.

AdGeçerli mi?
$total, $userName, $user_nameevet
$_count, $item2evet
$2itemshayır, rakamla başlayamaz
$user-namehayır, bu $user eksi name demektir
$thishayır, mevcut nesne için ayrılmıştır; ona atama yapmak ölümcül bir hatadır

Yani $city, $City ve $CITY üç farklı değişkendir. snake_case ($first_name) ya da camelCase ($firstName) kullanın ve proje başına tek bir stilde kalın. PSR kodlama standartları değişken adlandırmayı bilerek açık bırakır; Laravel ve Symfony kodu çoğunlukla camelCase kullanır.

Değişkenleri stringlerde kullanmak

Çift tırnak içinde PHP değişkenleri değerleriyle değiştirir; tek tırnak içinde değiştirmez. Değişkenin hemen ardından harfler geliyorsa ya da bir dizi elemanına string anahtarla erişiyorsanız değişkeni süslü parantez içine alın:

Stringler sayfası tırnakları, birleştirmeyi ve interpolasyonu ayrıntılı olarak anlatır.

Tanımsız değişkenler ve varsayılan değerler

Hiç atanmamış bir değişkeni okumak null verir ve PHP'niz bir uyarı yazdırır:

Warning: Undefined variable $discount in /home/index.php on line 3

Önce isset ile kontrol edin ya da varsayılan bir değer sağlamak için null birleştirme operatörü ?? kullanın. İkisi de uyarısız çalışır:

$x ??= 0;, $x = $x ?? 0; ifadesinin kısa yazımıdır. Form ve URL değerleri olağan durumdur: $page = $_GET['page'] ?? 1;.

Fonksiyonlarda değişken kapsamı

Bir fonksiyonun dışında tanımlanan değişkenler onun içinde görünmez ve fonksiyonun içinde oluşturulan değişkenler fonksiyon döndüğünde kaybolur. JavaScript'ten gelenler için bu en yaygın sürprizdir:

?? 0 olmasaydı ilk fonksiyon tanımsız bir $taxRate için uyarı verirdi. Değerleri parametre olarak geçirmek fonksiyonları öngörülebilir ve test edilmesi kolay tutar; ilk başvurmanız gereken yol budur. Fonksiyonlar sayfası parametreleri ve dönüş değerlerini anlatır.

global anahtar kelimesi ve $GLOBALS

Bir fonksiyonun gerçekten global bir değişken kullanması gerekiyorsa onu global ile bildirin ya da her global değişkeni adıyla tutan $GLOBALS dizisini kullanın:

Global değişkenler kodun takibini zorlaştırır, çünkü herhangi bir fonksiyon onları değiştirebilir. Eski kodda ve WordPress eklentilerinde görünürler (global $wpdb;); yeni kodda değerleri içeri geçirin ya da bir sınıf kullanın.

Static değişkenler değerini korur

Bir fonksiyonun içindeki static değişken bir kez oluşturulur ve çağrılar arasında değerini korur. Yine de yereldir: fonksiyonun dışındaki kod onu göremez.

Değişken değişkenler ($$name)

$$name, $name değerini başka bir değişkenin adı olarak kullanır. Çalışır, ama diziler neredeyse her zaman aynı işi daha açık yapar:

<?php
$field = "color";
$$field = "blue";        // creates $color
echo $color, "\n";

// The clearer way to have names chosen at runtime:
$settings = [];
$settings[$field] = "blue";
echo $settings["color"], "\n";

Kopya mı referans mı

Bir değişkeni diğerine atamak, diziler dahil, değeri kopyalar. Bunun yerine iki adın da aynı değeri göstermesi için başına & koyun:

Nesneler farklı davranır: bir nesneyi atamak aynı nesneye bir tanıtıcı kopyalar, bu yüzden değişkenlerden herhangi biri üzerinden yapılan değişiklikler ikisinden de görünür. Gerçek bir kopya için clone kullanın.

Sık yapılan hata: bir if veya döngünün içinde atanan değişken

PHP'de blok kapsamı yoktur, bu yüzden if, for veya foreach içinde oluşturulan bir değişken sonrasında da var olur. Bu işe yarar ama bir hatayı gizler: blok çalışmadığında değişken hiç oluşturulmamış olur.

Varsayılan satır olmasaydı boş bir $orders, $message değişkenini tanımsız bırakır ve bir uyarı yazdırırdı. Her değişkene, onu atayabilecek bloktan önce bir değer verin.

Sıkça Sorulan Sorular

PHP'de değişken nasıl tanımlanır?

$ ile başlayan bir ada değer atayın: $count = 10;. PHP'de var veya let anahtar kelimesi ve tanımlamada tür yoktur; değişken ilk atamayla oluşturulur ve değerinin türünü alır.

Fonksiyonum neden dışarıda tanımlanmış bir değişkeni göremiyor?

PHP fonksiyonlarının kendi yerel kapsamı vardır ve global değişkenleri otomatik olarak görmez. Değeri parametre olarak geçirin (temiz seçenek), fonksiyonun içinde global $name; bildirin ya da $GLOBALS['name'] değerini okuyun. Closure'lar onu use ($name) ile yakalayabilir, ok fonksiyonları fn() ise otomatik yakalar.

PHP'de static değişken nedir?

Bir fonksiyonun içinde static ile bildirilen yerel bir değişkendir, örneğin static $calls = 0;. Bir kez başlatılır ve o fonksiyonun çağrıları arasında değerini korur; sayaçlar ve basit önbellekler için işe yarar.

PHP değişken adları büyük/küçük harfe duyarlı mı?

Evet. $name, $Name ve $NAME üç farklı değişkendir. Fonksiyon ve sınıf adları ise PHP'de büyük/küçük harfe duyarlı değildir.

PHP'de bir değişkeni nasıl silerim?

unset($name); çağırın. Ardından isset($name) false olur ve onu okumak bir "Undefined variable" uyarısı verir. null atamak değişkeni korur ama içini boşaltır.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA