Merhaba Webkolog takipçileri!
PHP ile kod yazarken, farklı türdeki değişkenlerle sürekli etkileşim halindeyiz. Bir değişkenin ne tür bir veri içerdiğini bilmek, boş olup olmadığını kontrol etmek veya tipini değiştirmek, hatasız ve sağlam uygulamalar geliştirmek için hayati öneme sahiptir. PHP, bize bu tür değişken kontrollerini ve yönetimini sağlayan çok sayıda **kontrol fonksiyonu** sunar. Bu makalede, bu güçlü araçları nasıl kullanacağımızı ve kodlarımızda değişkenleri daha etkin bir şekilde nasıl yönetebileceğimizi keşfedeceğiz. Hadi gelin, değişkenlerinize yakından bakalım!
1. Değişken Varlığı ve Boşluk Kontrolü
Bir değişkenin tanımlanıp tanımlanmadığını veya içinde bir değer olup olmadığını kontrol etmek, özellikle kullanıcı girdilerini işlerken veya isteğe bağlı parametrelerle çalışırken çok önemlidir.
<?php
$isim = "Ahmet";
$yas = 0;
$adres; // Tanımlanmamış değişken
$bosMetin = "";
$sifir = 0;
$gercekBos = null;
// Bir değişkenin varolup olmadığını kontrol eder: isset()
if (isset($isim)) {
echo "$isim değişkeni tanımlı ve değeri var.<br>"; // Çıktı: Ahmet değişkeni tanımlı ve değeri var.
}
if (!isset($adres)) {
echo "adres değişkeni tanımlı değil.<br>"; // Çıktı: adres değişkeni tanımlı değil.
}
// Bir değişkene değer atanmamışsa, veya değeri sıfır veya boşsa doğru (True) verir: empty()
if (empty($yas)) { // $yas 0 olduğu için true döner
echo "Yaş boş veya sıfır.<br>"; // Çıktı: Yaş boş veya sıfır.
}
if (empty($bosMetin)) {
echo "Boş metin boş.<br>"; // Çıktı: Boş metin boş.
}
if (empty($adres)) { // Tanımlanmamış değişkenler empty() için true döner.
echo "Adres boş.<br>"; // Çıktı: Adres boş.
}
if (empty($gercekBos)) {
echo "Gerçek boş değişken boş.<br>"; // Çıktı: Gerçek boş değişken boş.
}
// Bir değişkeni ortadan kaldırır: unset()
unset($isim);
if (!isset($isim)) {
echo "İsim değişkeni unset edildi.<br>"; // Çıktı: İsim değişkeni unset edildi.
}
?>
2. Değişken Tipi Kontrolü
Bir değişkenin hangi veri türüne ait olduğunu öğrenmek veya belirli bir türde olup olmadığını kontrol etmek, özellikle esnek tipli PHP'de önemlidir.
<?php
$sayi = 123;
$metin = "Merhaba";
$dogruYanlis = true;
$ondalik = 10.5;
$dizi = array(1, 2, 3);
$nesne = new StdClass(); // Basit bir nesne
// Değişken tipini döndürür: gettype()
echo "sayi'nın tipi: " . gettype($sayi) . "<br>"; // Çıktı: integer
echo "metin'in tipi: " . gettype($metin) . "<br>"; // Çıktı: string
echo "dogruYanlis'ın tipi: " . gettype($dogruYanlis) . "<br>"; // Çıktı: boolean
echo "dizi'nin tipi: " . gettype($dizi) . "<br>"; // Çıktı: array
echo "nesne'nin tipi: " . gettype($nesne) . "<br>"; // Çıktı: object
echo "<hr>";
// Değişkenin dizi olup olmadığını kontrol eder: is_array()
if (is_array($dizi)) {
echo "$dizi bir dizi.<br>";
}
// Değişkenin boolean olup olmadığını kontrol eder: is_bool()
if (is_bool($dogruYanlis)) {
echo "$dogruYanlis bir boolean.<br>";
}
// Değişkenin tam sayı olup olmadığını kontrol eder: is_int(), is_integer(), is_long()
// Bu üç fonksiyon aynı işi yapar.
if (is_int($sayi)) {
echo "$sayi bir tam sayı (integer).<br>";
}
// Değişkenin ondalık (float/double/real) sayı olup olmadığını kontrol eder: is_float(), is_double(), is_real()
// Bu üç fonksiyon aynı işi yapar.
if (is_float($ondalik)) {
echo "$ondalik bir ondalık sayı (float).<br>";
}
// Değişkenin string olup olmadığını kontrol eder: is_string()
if (is_string($metin)) {
echo "$metin bir string.<br>";
}
// Değişkenin herhangi bir türden sayı veya sayısal string olup olmadığını kontrol eder: is_numeric()
$sayisalString = "123.45";
if (is_numeric($sayisalString)) {
echo "$sayisalString sayısal bir değer.<br>"; // Çıktı: 123.45 sayısal bir değer.
}
// Değişkenin null olup olmadığını kontrol eder: is_null()
if (is_null($gercekBos)) {
echo "Gerçek boş değişken null.<br>"; // Çıktı: Gerçek boş değişken null.
}
// Değişkenin bir nesne olup olmadığını kontrol eder: is_object()
if (is_object($nesne)) {
echo "Değişken bir nesne.<br>"; // Çıktı: Değişken bir nesne.
}
// Değişkenin skaler (integer, boolean, string ya da float) olup olmadığını kontrol eder: is_scalar()
if (is_scalar($sayi)) {
echo "$sayi bir skaler değer.<br>"; // Çıktı: 123 bir skaler değer.
}
if (is_scalar($dizi)) {
echo "$dizi bir skaler değer.<br>"; // Burası çalışmaz, dizi skaler değildir.
}
// Değişkenin geçerli bir fonksiyonun adı olup olmadığını kontrol eder: is_callable()
function denemeFonksiyonu() { return true; }
if (is_callable('denemeFonksiyonu')) {
echo "denemeFonksiyonu çağrılabilir.<br>";
}
if (is_callable('nonExistentFunction')) {
echo "nonExistentFunction çağrılabilir.<br>"; // Burası çalışmaz
}
?>
3. Değişken Tipi Dönüşümleri
Bir değişkenin tipini geçici veya kalıcı olarak değiştirmek, bazen veri manipülasyonunda veya uyumluluk sağlamada gereklidir.
<?php
$sayisalString = "123.45";
$sayiTam = 42;
$boolDeger = true;
// Bir değişkenin değerini kayan noktalı sayıya çevirir: floatval() veya doubleval() veya (float)
echo "floatval('" . $sayisalString . "'): " . floatval($sayisalString) . " (Tipi: " . gettype(floatval($sayisalString)) . ")<br>"; // Çıktı: 123.45 (Tipi: double)
echo "doubleval('" . $sayisalString . "'): " . doubleval($sayisalString) . " (Tipi: " . gettype(doubleval($sayisalString)) . ")<br>"; // Çıktı: 123.45 (Tipi: double)
echo "(float) " . $sayiTam . ": " . (float)$sayiTam . " (Tipi: " . gettype((float)$sayiTam) . ")<br>"; // Çıktı: 42 (Tipi: double)
// Bir değişkenin tamsayı kısmını döndürür: intval() veya (int)
echo "intval('" . $sayisalString . "'): " . intval($sayisalString) . " (Tipi: " . gettype(intval($sayisalString)) . ")<br>"; // Çıktı: 123 (Tipi: integer)
echo "intval(10.9): " . intval(10.9) . " (Tipi: " . gettype(intval(10.9)) . ")<br>"; // Çıktı: 10 (Tipi: integer)
echo "(int) " . $ondalik . ": " . (int)$ondalik . " (Tipi: " . gettype((int)$ondalik) . ")<br>"; // Çıktı: 10 (Tipi: integer)
// Bir değişkenin string değerini döndürür: strval() veya (string)
echo "strval(" . $sayiTam . "): '" . strval($sayiTam) . "' (Tipi: " . gettype(strval($sayiTam)) . ")<br>"; // Çıktı: '42' (Tipi: string)
echo "(string) " . $boolDeger . ": '" . (string)$boolDeger . "' (Tipi: " . gettype((string)$boolDeger) . ")<br>"; // Çıktı: '1' (Tipi: string)
// Bir değişkenin tipini verilen tipe kalıcı olarak çevirir: settype()
$deger = "50";
echo "Değerin başlangıç tipi: " . gettype($deger) . ", Değer: " . $deger . "<br>"; // Çıktı: string, Değer: 50
settype($deger, "integer");
echo "settype sonrası tipi: " . gettype($deger) . ", Değer: " . $deger . "<br>"; // Çıktı: integer, Değer: 50
settype($deger, "boolean");
echo "settype sonrası tipi: " . gettype($deger) . ", Değer: " . ($deger ? "True" : "False") . "<br>"; // Çıktı: boolean, Değer: True
?>
4. Değişken Bilgilerini Yazdırma ve Seri Hale Getirme
Değişkenlerin içeriğini ve yapısını anlamak, özellikle diziler ve nesneler gibi karmaşık tiplerle çalışırken hata ayıklama için çok değerlidir.
<?php
$kullanici = array(
"id" => 1,
"ad" => "Ayşe",
"email" => "[email protected]",
"yetkiler" => array("admin", "editor")
);
// Bir değişkeni ekrana kolay anlaşılır halde yazdırır (dizi ve nesneler için): print_r()
echo "<h5>print_r ile kullanıcı değişkeni:</h5>";
echo "<pre>";
print_r($kullanici);
echo "</pre>";
/* Çıktı:
Array
(
[id] => 1
[ad] => Ayşe
[email] => [email protected]
[yetkiler] => Array
(
[0] => admin
[1] => editor
)
)
*/
echo "<hr>";
// Bir değişkeni ekrana kolay anlaşılır halde yazdırır, değişken türleri hakkında bilgi de verir: var_dump()
echo "<h5>var_dump ile kullanıcı değişkeni:</h5>";
echo "<pre>";
var_dump($kullanici);
echo "</pre>";
/* Çıktı:
array(4) {
["id"]=>
int(1)
["ad"]=>
string(5) "Ayşe"
["email"]=>
string(16) "[email protected]"
["yetkiler"]=>
array(2) {
[0]=>
string(5) "admin"
[1]=>
string(6) "editor"
}
}
*/
echo "<hr>";
// Değişkenin türü, uzunluğu ve değerini içeren bir string döndürür: serialize()
// Bu fonksiyon, bir değişkeni (özellikle diziler ve nesneler) saklamak veya ağ üzerinden göndermek için kullanılır.
$serilestirilmisKullanici = serialize($kullanici);
echo "Serileştirilmiş kullanıcı: " . $serilestirilmisKullanici . "<br>";
// Çıktı: a:4:{s:2:"id";i:1;s:2:"ad";s:5:"Ayşe";s:5:"email";s:16:"[email protected]";s:8:"yetkiler";a:2:{i:0;s:5:"admin";i:1;s:6:"editor";}}
// Serileştirilmiş bir stringi tekrar PHP değerine dönüştürür: unserialize()
$geriDonusturulmusKullanici = unserialize($serilestirilmisKullanici);
echo "<h5>unserialize sonrası kullanıcı:</h5>";
echo "<pre>";
print_r($geriDonusturulmusKullanici);
echo "</pre>";
echo "<hr>";
// Bütün tanımlı değişkenleri dizi halinde döndürür: get_defined_vars()
echo "<h5>Tanımlı değişkenler (get_defined_vars):</h5>";
echo "<pre>";
print_r(get_defined_vars());
echo "</pre>"; // Bu, o anki tüm yerel ve global değişkenleri gösterecektir.
?>
5. Kaynak (Resource) Tipi Kontrolü
Veritabanı bağlantıları, dosya işaretçileri gibi özel kaynakları yönetirken, bu kaynakların tipini veya geçerliliğini kontrol etmek gerekebilir.
<?php
$dosyaKaynagi = fopen("test.txt", "w"); // Bir dosya kaynağı oluştur
// Değişkenin bir kaynak olup olmadığına karar verir: is_resource()
if (is_resource($dosyaKaynagi)) {
echo "$dosyaKaynagi bir kaynak (resource).<br>";
}
// Değişkenin kaynak tipini döndürür: get_resource_type()
if (is_resource($dosyaKaynagi)) {
echo "Dosya kaynağının tipi: " . get_resource_type($dosyaKaynagi) . "<br>"; // Çıktı: stream
}
fclose($dosyaKaynagi); // Kaynağı kapat
unlink("test.txt"); // Test dosyasını temizle
?>
PHP'nin kontrol fonksiyonları, değişkenlerinizi derinlemesine anlamak ve uygulamanızın beklenmedik durumlarla karşılaşmasını önlemek için vazgeçilmezdir. Değişkenlerin varlığını, tipini ve içeriğini doğru bir şekilde kontrol ederek, daha güvenli, daha hataya dayanıklı ve daha okunabilir kodlar yazabilirsiniz. Özellikle kullanıcı girdilerini işlerken veya dışarıdan gelen verileri doğrularken bu fonksiyonları aktif olarak kullanmayı unutmayın!
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder