PHP ve Json ikilisi arasındaki ilişkiyi ve Json’un PHP’de kullanımını anlatmak için öncelikle Json nedir onun üzerinde duralım.
Programlamada farklı platformlar arasında veri alışverişi ihtiyacı vardır. Mesela bir sosyal platformdan son paylaşımları çekip kendi projenizde kullanmak isteyebilirsiniz. Bu tür işlemler için platformlar arasında bir paylaşım olması lazımdır. Bu paylaşım için bazı teknolojiler geliştirilmiştir. Mesela bunlardan birisi XML teknolojisidir. Fakat XML, Javascript ile beraber iyi kullanılamamaktadır. İşte burada Json, Javascript ile uyumlu olduğundan çok tercih edilmektedir.
Json içerisindeki veriler her programlamada bulunan dizi ve obje şeklindedir.
Object
“{“ ile başlar ve “}” ile biter. İçerisine veriler “Anahtar” ve “Veri” şeklinde yazılır. Örnek;
{
"name": "Erhan",
"surname": "Kılıç"
}
Dizi
“[“ ile başlar ve “]” ile biter. İçerisindeki veriler sadece “Veri” şeklinde yazılır. Örnek;
[
"Erhan", "Kılıç"
]
Json içerisinde ikisi bir arada istenildiği gibi kullanılabilir. Örnek;
{
"tip": "kitap",
"tur": "roman",
"urunler": [
{"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
{"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
{"ad": "Kar", "yazar": "Orhan Pamuk"}
]
}
Json’un tercih edilmesinin en önemli sebebi Javascript’deki obje ve dizi yapısının tamamen aynı olmasıdır. Örnek olarak Javascript‘te de yapmaya çabaladığımızda siz de farkedeceksiniz.
PHP’de Json Fonksiyonları
Php’de Json ile ilgili işlemler şu şekilde yapılabilir. Kendi sitemizde Javascript ya da jQuery, AngularJs gibi kütüphanelerinde kullanmak için, başka platformlarla veri paylaşımında bulunup api oluşturmak için verileri Json formatında ekrana yazdırabiliriz. Başka bir yerden Json ile çektiğimiz veriyi php uygulamamızda kullanmak için kullanabiliriz.
Dikkat etmemiz gereken şey şudur. Eğer aşağıdaki fonksiyonları kullanmazsak bir string değer gibi algılayacağından içerideki verilere erişmek hayli zahmetli olacaktır.
json_encode()
Bu fonksiyon istediğimiz veriyi Json olarak yazdırmamızı sağlar. Örnek Kullanım;
$dizi = array(
"tip"=> "kitap",
"tur"=> "roman",
"urunler"=> array(
array("ad"=> "Ihtiyar Kemanci", "yazar"=> "Nihat Genc"),
array("ad"=> "Su Cilgin Turkler", "yazar"=> "Turgut Ozakman"),
array("ad"=> "Kar", "yazar"=> "Orhan Pamuk")
)
);
$json = json_encode($dizi);
echo $json;
json_decode()
Bu fonksiyon ise bir yerden çektiğimiz Json veriyi decode ederek php yazılımımız içerisinde kullanmamızı sağlar. İçerideki verilere ise objedeki bir veriye ulaşır gibi ulaşabiliriz. Aşağıdaki örnekte Json veriyi bir string veri olarak oluşturuyorum. Çünkü dışarıdan Json veri çektiğimizde string bir veri olarak gelecektir aynı şekilde. Örnek;
$json ='{
"tip": "kitap",
"tur": "roman",
"urunler": [
{"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
{"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
{"ad": "Kar", "yazar": "Orhan Pamuk"}
]
}';
$veri = json_decode($json);
echo $veri->tip;
echo $veri->tur;
foreach($veri->urunler as $urun){
echo vardumb($urun);
echo "<br/>";
}
Fonksiyon içerisinde ikinci bir parametre olarak true eklersek obje olarak değil direk dizi olarak kaydecektir ve erişimimiz de bu şekilde değişecektir. Örnek;
$json ='{
"tip": "kitap",
"tur": "roman",
"urunler": [
{"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
{"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
{"ad": "Kar", "yazar": "Orhan Pamuk"}
]
}';
$veri = json_decode($json, true);
echo $veri[tip];
echo $veri[tur];
foreach($veri[urunler] as $urun){
echo vardumb($urun);
echo "<br/>";
}