http_build_query :
Hazırladığımız veya varolan diziyi / nesneyi query string formatına dönüştürmek için bu fonksiyonu kullanabiliriz. Fonksiyona 3 parametre gönderebiliyoruz. İlk parametreye tek boyutlu veya çok boyutlu dizi (array) / nesne (object) atamamız gerekiyor. İkinci parametre; dizinin index değerinde sayısal tanımlar varsa bunların önüne bir ifade ekleyebilmemizi sağlıyor. (user1,user2 vb.) 3. parametre ise query string'te parametreleri ayrıştırmaya yarayan & işaretinin yerine herhangi bir başka değer atamımızı sağlıyor.
Örnek olarak http request üzerinden çalışan web servisimiz olduğunu düşünelim. Bu servise istek göndermemiz gereken adres ve parametlerin olması gerekiyor. Eğer yazılımcının http_build_query fonksiyonundan haberi yoksa aşağıda ki koda benzer bir şey yapmaya çalıştığını göreceğiz. - Aslında benzer bir koda denk geldiğim için bu makaleyi yazıyorum
-$base_url = 'http://www.webdeders.com/webservice/send_sms.php';
$params = array(
'module' => 'smsGonder',
'responseType' => 'JSON',
'uniqId' => 'A1K4PS951',
'gsm' => '537250XXXX',
'text' => 'Onay Kodunuz: XXXX',
);
$i = 0;
$query_string = '';
foreach($params AS $index => $value)
{
if($i != 0) { $query_string .= '&'; }
$query_string .= $index . '=' . $value;
$i++;
}
$url = $base_url . '?' . $query_string;Burada gereksiz bir döngü içerisine girdik. Ardından $i değişkeni ile & operatörünün ilk parametrenin önününe gelmemesi için if koşulu yazdık ve $query_string değişkeninin değerini güncelledik. Aynı işlemi http_build_query fonksiyonu ile yapmayı denersek;$base_url = 'http://www.webdeders.com/webservice/send_sms.php';
$params = array(
'module' => 'smsGonder',
'responseType' => 'JSON',
'uniqId' => 'A1K4PS951',
'gsm' => '537250XXXX',
'text' => 'Onay Kodunuz: XXXX',
);
$query_string = http_build_query($params);
$url = sprintf('%s?%s',$base_url, $query_string);Her iki kod aynı çıktıyı vermesine rağmen http_build_query fonksiyonu ile hem döngüden kurtuluyoruz hem de daha temiz ve düzenli kod yazımı gerçekleştiriyoruz. Ayrıca burada $base_url ve $query_string değişkenlerinin değerini nokta operatörüyle birleştirmek yerine sprintf fonksiyonu ile birleştirdik.Kaynak : WebdeDers.Com
Bu makale ilginizi çektiyse daha önce paylaştığım :
- uniqid
- filter_var
- compact & extract
- similar_text
- parse_ini_file
- Json_encode & Json_decode & json_last_error
- func_num_args & func_get_args & func_get_arg
- parse_url
fonksiyonlarını da inceleyebilirsiniz.