שליחת פרמטרים ב-GET ב-PHP

הדרך הטובה ביותר להכנת בקשה ל-GET עם שלל של פרמטרים.

הרבה פעמים, במיוחד כאשר אנו פונים ל-WebService זה או אחר, ולא משנה אם ב-SOAP או ב-REST או אם אנו משתמשים ב-cURL או בשיטה אחרת, אנו זקוקים לשלוח בקשת GET, לפעמים ארוכה מאד.

למי שלא זוכר, בקשת GET נראית ככה:
http://example.com/?key1=value1&key2=value2&key3=value3
וכך הלאה והלאה, כאשר בקשות ה-GET יכולות להיות ארוכות לפעמים עד מאד.

לא מעט פעמים אני נתקל בקוד כזה:


$request = "http://example.com?".$key1."=".$value1.$key2."=".$value2.$key3."=".$value3;

או בנגזרותיו השונות. למען הסר ספק, זה קוד שעובד וגם קל יחסית לקריאה (בגלל זה אני משתמש בו בעיקר בדוגמאות), אבל זה לא קוד שקל לתחזק אותו, הרי אם אני רוצה להכניס פרמטרים נוספים או לבצע שינויים, שלא לדבר על דיבוג הסיפור הזה, אני מתחיל להסתבך.

בדיוק בשביל זה יש לנו את פונקצית http_build_query שהיא פשוטה מאד. היא מקבל מערך ומחזירה מערך מקודד ומוכן לשליחה ולשימוש בכל בקשת GET שהיא. למשל:


$example_args = array($key1 => $val1, $key2 => $val2, $key3 => $val3);
$request = "http://example.com?".http_build_query($example_args, '', '&');

פשוט נורא, לא? השימוש בפרמטר השני והשלישי לא נדרשים אבל אני ממלא אותן מכל מיני סיבות (אפשר לקרוא בדוקומנטציה בדיוק למה).

נשאלת השאלה למה בדיוק להשתמש בזה? הרי יותר קל להשתמש במה שמוכר ובטוח, לא? התשובה היא יכולת תחזוקה של קוד. הרבה יותר קל לתחזק וגם להבין קוד שבנוי היטב, ושימוש במערך שהוא טבעי לנו, כמתכנתים, להבין ולתקן במידת הצורך יותר ממחרוזת טקסט ארוכה ומסרבולת. גם הקוד כך עמיד יותר אם אני רוצה לשנותו – וזה מה שמפריד מתכנת טוב ממתכנת מעולה.

פוסטים נוספים שכדאי לקרוא

גלילה לראש העמוד