כתבתי יותר PHP מכל שפה אחרת, תחילה כמפתח תוסף וורדפרס ובהמשך בניית SaaS backends ב-Laravel, ויש מטלה אחת קטנה שעולה כל הזמן ושנמאס לי לעשות ביד יש לך כתם JSON, דגימת תצורה, תגובת API, מתקן, ואתה צריך את זה כמערך PHP בקוד המקור שלך לא מפוענח בזמן ריצה, למעשה כתוב בקובץ כמילולי. הרטיית הסוגריים והחצים ביד היא איטית, וזה בדיוק סוג התרגום המכני שכלי צריך לעשות. אז בניתי אחד Toolz.dev, וזה המדריך לזה.
TL;DR: הכליז ממיר מערך JSON ל-PHP מנתח מסמך JSON ומבצע אותו בסידרה כמערך PHP מילולית ניתן להדביק ישר לתוך קובץ. אובייקטי JSON הופכים למערכים אסוציאטיביים עם
=>, מערכי JSON הופכים למערכים באינדקס, וסקלרים ממפים למקבילות ה-PHP שלהם. בחר קצר[]או קלאסיarray()תחביר, הגדר את ההזחה, ובאופן אופציונלי עטוף את התוצאה ב-a$variable = [...];מְשִׁימָה. זה פועל לחלוטין בצד הלקוח: אין העלאה, אין הרשמה, עובד במצב לא מקוון.
מהו ממיר מערך JSON ל-PHP?
ממיר מערך JSON ל-PHP הופך מסמך JSON למערך PHP המקביל מילולית. אובייקט JSON הופך למערך אסוציאטיבי שנכתב עם => אופרטור, מערך JSON הופך למערך באינדקס, והסוגים הסקלרים ממפים ישירות: מחרוזת JSON הופכת למחרוזת PHP עם ציטוט יחיד, true ו false תישאר אותו הדבר, null נשאר null, ומספרים שומרים על ערכם קינון נשמר לכל עומק, ולכן אובייקט JSON בעל מבנה עמוק יוצא כמערך PHP בעל מבנה עמוק עם אותה צורה.
הסיבה שזה שימושי היא שמערכי JSON ו-PHP מתארים את אותו הדבר, עץ של ערכים מקשים ומסודרים, עם סימני פיסוק שונים. JSON משתמש בנקודתיים ובסוגרים; PHP משתמש => וסוגריים תרגום ביניהם הוא מכניקה טהורה, ומכניקה מועדת לשגיאות כאשר היא נעשית ביד, במיוחד עם מבנים מקוננים שבהם סוגר אחד שלא במקום שובר את הקובץ הממיר עושה את התרגום באופן דטרמיניסטי ומחזיר לך PHP חוקי.
כדאי שיהיה ברור מה זה לא זה לא json_decode. PHP קורא JSON בזמן ריצה בצורה מושלמת, וכאשר הנתונים שלך מגיעים כמחרוזת, פענוח זה המהלך הנכון כלי זה הוא למקרה השני, כאשר אתה רוצה את המערך לחיות בקוד המקור עצמו.
למה לא פשוט להשתמש ב-json_decode?
זו השאלה הראשונה שכל מפתח PHP שואל, והיא הנכונה. json_decode($string, true) מנתח מחרוזת JSON לתוך מערך PHP, ומדריך PHP מתעד אותה כדרך הסטנדרטית לצרוך JSON. אם ה-JSON שלך הוא נתונים שמגיעים בזמן ריצה, מבקשת HTTP, תור, קובץ שקראת, אז json_decode הוא בדיוק מה שאתה צריך להשתמש, ושום מחולל קוד לא שייך לשום מקום קרוב אליו.
הממיר הוא למצב אחר: כאשר ה-JSON אינו נתוני זמן ריצה אלא משהו שאתה רוצה מחויב לקוד כמה מקרים קונקרטיים מהעבודה שלי מערך תצורה ברירת מחדל שנשלח עם תוסף וצריך להיות קריא וניתן לעריכה במקור טבלת חיפוש, נגיד מפה של קודי מדינה לשמות, שאתה מדביק פעם אחת ולעולם לא מביא מתקן בדיקה שצריך להיות מילולי כדי שהבדיקה תהיה עצמאית ואינה תלויה בקריאת קובץ זרע להעברת מסד נתונים דוגמה בתיעוד שצריכה להיות PHP שניתן להדבקה בהעתקה ולא JSON.
בכל אלה, פענוח מחרוזת JSON בכל בקשה יהיה בזבזני ויסתיר את הנתונים מאחורי מחרוזת מילולית, כאשר העורך שלך לא יכול לקפל אותה, הלינטר שלך לא יכול לבדוק אותה, ומבקר לא יכול לקרוא אותה כ-PHP. כתיבת המערך למקור פותרת זאת. הממיר הוא הדרך המהירה ביותר להגיע מדגימת JSON למילולית זו.
הנה ההחלטה בטבלה אחת.
| מצב | להשתמש | למה |
|---|---|---|
| JSON מגיע בזמן ריצה כנתונים | json_decode($json, true) |
ניתוח הוא העבודה; לשמור את זה דינמי |
| JSON הוא תצורה, מתקנים, זרעים, דוגמאות | ממיר מערך JSON ל-PHP | בצע מילולית קריא למקור |
| אתה צריך JSON בחזרה מתוך ערך PHP | json_encode($array) |
הכיוון ההפוך |
יש לך PHP serialize() מיתר |
בטל את הסידור של הכלי | זה פורמט אחר לגמרי |
מה ההבדל בין קצר [] ו array() תחביר?
הם מייצרים מערכים זהים; רק הסוגריים שונים. התחביר הקצר משתמש [ ו ] והוא זמין מאז PHP 5.4, שהיא כיום היסטוריה עתיקה, כך שלכל תחביר קצר של בסיס קוד מודרני הוא ברירת המחדל וזה שאליו אני מגיע. הקלאסיקה array() טופס עובד בכל גרסה של PHP ששוחררה אי פעם, וזו הסיבה היחידה עדיין לבחור בו: אתה מכוון לזמן ריצה ישן יותר מ-PHP 5.4, או בסיס קוד שמדריך הסגנון שלו מחייב את הטופס הארוך.
הכלי מאפשר לך לעבור ביניהם מבלי להדביק מחדש את ה-JSON שלך, כך שאם אתה תורם לפרויקט ישן יותר תוכל להתאים את סגנון הבית שלו בלחיצה אחת. העצה שלי לכל דבר חדש היא תחביר קצר, ו-PSR-12, סגנון הקידוד המודרני של PHP, כתוב סביבו.
כיצד מטפלים במחרוזות ובתווים מיוחדים?
זה החלק שנושך אנשים שכותבים ממיר מהיר משלהם, אז כדאי להסביר הכלי פולט מחרוזות בתור מילוליות PHP בציטוט יחיד בתוך מרכאות בודדות, PHP מתייחס כמעט לכל תו באופן מילולי; השניים היחידים שמיוחדים הם ה-backslash וה-single quote עצמו אז הממיר בורח בדיוק מהשניים האלה, קו נטוי אחורי הופך לשני קו נטוי אחורי וציטוט בודד מקבל קו נטוי אחורי קודם, וזה משאיר את כל השאר לבד.
יש לכך תוצאה נעימה שורה חדשה בתוך מחרוזת JSON מגיעה כשורה חדשה אמיתית בתוך מחרוזת PHP המצוטטת יחידה, שהיא תקפה ומשמרת את התו בדיוק. אתה לא מקבל את הרעידות שהיית עושה אם הכלי היה מנסה בתמימות ליישם רצפי בריחה של ציטוט כפול מחרוזת JSON כמו O'Brien הופך 'O\'Brien', ונתיב Windows כמו C:\Users הופך 'C:\\Users', שניהם נכונים PHP. אם אי פעם ניפית באגים בקובץ תצורה שבו אפוסתרוף בערך שבר בשקט את התחביר, תעריך שזה מטופל עבורך.
איך אני משתמש בממיר?
הזרימה היא ארבעה שלבים הדבק אובייקט או מערך JSON בתיבת הקלט; אם ברצונך לראות תחילה את צורת הפלט, טען את המדגם. בחר את תחביר המערך, קצר [] או array(). הגדר את ההזחה ל-2 רווחים, 4 רווחים או לשונית, כדי להתאים לפרויקט שלך, ובאופן אופציונלי הקלד שם משתנה כדי לעטוף את הפלט בתור $config = [...]; עם נקודה-פסיק נגררת, מוכן לרדת לקובץ. לאחר מכן לחץ על המר והעתק את התוצאה.
אם ה-JSON אינו חוקי, הכלי מדווח על המנתח' הודעת שגיאה משלו במקום להיכשל בשקט, כך שפסיק נגרר תועה או מפתח לא מצוטט ממהר למצוא. ומכיוון שהכל פועל בדפדפן שלך, אתה יכול להדביק תגובת API אמיתית או תצורה פרטית מבלי שהיא תעזוב את המחשב שלך, מה שחשוב כאשר הערכים אינם משהו שהיית שולח לשרת אקראי. המודל הזה בצד הלקוח הוא אותו מודל מאחורי שאר האתר, המתואר ב- כלים מקוונים לפרטיות נתונים מדריך.
איך זה מתאים לכלי JSON האחרים?
ממיר מערך JSON ל PHP הוא חבר אחד במשפחה קטנה של שנאי JSON באתר, והם חולקים את אותה ליבת ניתוח כאשר אתה רוצה לסדר את הJSON קודם, ה פורמט JSON יכניס ויאמת אותו. כאשר אתה צריך את אותם נתונים כמו ממשק TypeScript במקום PHP, ה ממיר JSON ל-TypeScript מסיק את הסוגים. כאשר היעד הוא גיליון אלקטרוני או עומס מסד נתונים, ה ממיר JSON ל-CSV משטח אותו לשורות, וה ממיר JSON ל-YAML מטפל בפורמטים של תצורה שמעדיפים YAML.
עבור מפתחי PHP במיוחד, השכן שכדאי לדעת הוא בטל את הסידור של הכלי, המטפל ב-PHP' משלו serialize() פורמט. כלומר חיה שונה מ-JSON, פורמט חוט ספציפי ל-PHP שאתה מוצא בנתוני הפעלה וכמה ערכי אפשרויות וורדפרס, ושני הכלים מכסים את שתי הדרכים שבהן נתונים מובנים מופיעים בדרך כלל בפרויקט PHP. אם אתה עובד על פני המחסנית, ה ערכת כלים למפתחי אינטרנט roundup מראה כיצד החלקים הללו משתלבים יחד, וה כלי פרודוקטיביות למפתחים המדריך מכסה את הסט הרחב יותר.
דוגמה עובדת מזרימת עבודה של וורדפרס ו-Laravel
תן לי להפוך את זה בטון עם שני המקומות אני מכה אותו ביותר בתוסף וורדפרס, אתה לעתים קרובות לשלוח מערך הגדרות ברירת מחדל כי זרעים טבלת האפשרויות על הפעלה במהלך פיתוח מבנה זה לעתים קרובות מתחיל חיים כמו מדגם JSON, אולי מיוצא מ UI הגדרות או משורטט החוצה תוך עיצוב הסכימה במקום לתרגם ביד, אני להדביק את JSON לתוך הממיר, לבחור תחביר קצר ו 4-space הזחה כדי להתאים את התוסף & #39;s סגנון, סוג defaults כשם המשתנה, וקבל בחזרה $defaults = [ ... ]; שנופל ישר לתוך א get_default_settings() פונקציה. המקשים נשארים קריאים, מבקר יכול לראות את הצורה ב-diff, ואין פענוח זמן ריצה בכל טעינת עמוד.
הצד של Laravel דומה אבל מופיע ב-config וב-seeders. קובץ תצורה מחזיר מערך אסוציאטיבי גדול, ויש לי באופן קבוע גרסת JSON של מיפוי כלשהו של צד שלישי, טבלת מטבעות, קבוצה של דגלי תכונה, רשימה של תוכניות, שצריכה להפוך למערך הזה. הממיר הופך את ה-JSON למילולי, אני עוטף אותו ב- return [ ... ]; קובץ התצורה מצפה, והערך הוא כעת PHP מהשורה הראשונה שהמסגרת מטמנת איתו במטמון config:cache במקום להיות מנותח ממחרוזת עבור seeders מסד נתונים אותו טריק עובד: הדבק את JSON של שורות המדגם שלך, לקבל מערך, ולהזין אותו ל insert().
הסיבה שאני נשען על ממיר ולא json_decode(file_get_contents(...)) בנקודות אלה אינה עצלות, היא שביצוע המילולי הופך את הנתונים לחלק מסקירת הקוד, לחלק מהניתוח הסטטי ולחלק מהיסטוריית הגרסאות בצורה שאדם קורא קובץ JSON היושב ליד הקוד הוא בלתי נראה ללינטר PHP; מערך במקור אינו כאשר הנתונים הם חלק קבוע מהאפליקציה ולא קלט אליה, הנראות שווה את ההמרה החד פעמית.
יש גם זווית תיעוד שזלזלתי בה עד שהתחלתי לכתוב מדריכים נוספים כאשר אתה רוצה להציג דוגמה של PHP ב-README או בבסיס ידע, כתם JSON אינו PHP שניתן להדבקה בהעתקה, וקוראים שתופסים אותו פוגעים בשגיאת תחביר, הפעלתו דרך הממיר תחילה פירושה שהדוגמה במסמכים שלך היא PHP אמיתית וניתנת להפעלה שקורא יכול להכניס לקובץ ולראות עבודה, וזה דבר קטן שמעלה בשקט את איכות התיעוד.
מהם הגבולות שכדאי לדעת עליהם?
כמה קצוות כנים. הגדול ביותר הוא דיוק מספרי, והוא מאפיין של ניתוח JSON באופן כללי ולא כלי זה באופן ספציפי. הממיר מנתח את ה-JSON שלך עם הדפדפן ' מנתח JSON, המייצג מספרים כצפים בעלי דיוק כפול. מספרים שלמים מעבר ל-2 בחזקת 53 בערך, ספרות שש עשרה, מאבדים דיוק בזמן הניתוח, לפני שהכלי רואה אותם אי פעם. אם אתה ממיר JSON עם מזהים שלמים גדולים מאוד, התייחס לאלה כמחרוזות ב-JSON כדי לשמור אותם מדויקים. כל ממיר מבוסס JSON.parse חולק את הגבול הזה; כלי שטען אחרת ישקר.
שנית, כפיית מקש מערך PHP.PHP ממיר בשקט מקש מחרוזת שנראה כמו מספר שלם למפתח שלם בפועל הממיר כותב מקשי אובייקט כמחרוזות מצוטטות, וזה מפורש ונכון, אך שים לב ש-PHP עצמו עשוי להתייחס אליו '0' ו 0 בתור אותו מפתח בזמן ריצה. זה חשוב רק עבור אובייקטים שהמפתחות שלהם הם מחרוזות מספריות, וזה נדיר, וההתנהגות היא PHP's, לא הכלי's.
שלישית, מכולות ריקות חפץ JSON ריק {} ומערך JSON ריק [] שניהם הופכים [] ב-PHP, מכיוון שמערך PHP אינו יכול להבחין בין השניים. זו אי בהירות אמיתית במיפוי, לא קיצור דרך, ואין מבנה PHP ששומר על ההבדל.
לבסוף, הפלט הוא ערך, לא משפט, אלא אם אתה מספק שם משתנה. בלי אחד אתה מקבל מילולי חשוף, וזה מה שאתה רוצה בעת הדבקה בביטוי קיים; עם אחד אתה מקבל הקצאה מלאה המסתיימת בנקודה-פסיק. שם המשתנה מאומת, כך שמזהה לא חוקי נדחה עם הודעה ברורה במקום לייצר PHP שבור.
שאלות נפוצות
מהו ממיר מערך JSON ל-PHP? ממיר מערך JSON ל-PHP הופך מסמך JSON למערך PHP המקביל מילולית. אובייקטי JSON הופכים למערכים אסוציאטיביים עם => אופרטור, מערכי JSON הופכים למערכים באינדקס, והסוגים הסקלרים ממפים לעמיתיהם ל-PHP כך שתוכל להדביק את התוצאה ישירות בסקריפט.
כיצד אוכל להמיר JSON למערך PHP? הדבק את ה-JSON שלך בתיבת הקלט, בחר תחביר קצר [] או מערך () וסגנון הזחה, ולאחר מכן לחץ על המר. הכלי בונה מערך PHP מילולי שתוכל להעתיק, עטוף אופציונלי בהקצאת משתנה אם תזין שם משתנה.
מה ההבדל בין תחביר קצר [] למערך ()? הם מייצרים מערכים זהים; רק הסוגריים שונים. תחביר קצר משתמש ב-[] והוא זמין מאז PHP 5.4, בעוד שמערך () הוא הצורה הישנה יותר שעובדת בכל גרסת PHP. בחר מערך () רק אם עליך לתמוך בזמן ריצה ישן יותר מ-PHP 5.4.
האם זה מחליף את json_decode ב-PHP? No. json_decode ($json, true) מנתח מחרוזת JSON למערך בזמן ריצה, וזה בדיוק כאשר ה-JSON מגיע כנתונים. כלי זה כותב את המערך לקוד המקור שלך במקום זאת, המתאים לתצורה, מתקנים, נתוני סיד ודוגמאות שאמורות לחיות בקובץ במקום להיות מפוענחות בכל בקשה.
כיצד ממופים אובייקטים ומערכים של JSON? אובייקט JSON הופך למערך אסוציאטיבי PHP כאשר כל מפתח הוא מחרוזת עם ציטוט יחיד ואחריו => והערך שלו. מערך JSON הופך למערך PHP באינדקס עם האלמנטים לפי הסדר. הקינון נשמר לכל עומק בדיוק כמו במקור.
כיצד מטפלים במחרוזות ובתווים מיוחדים? מחרוזות נפלטות כמילוליות PHP בציטוט יחיד, כך שרק קו נטוי אחורי וציטוט בודד נמלטים עם קו נטוי אחורי קודם. כל תו אחר, כולל שורה חדשה אמיתית, נשמר מילה במילה, מה שמתאים לאופן שבו PHP מתייחס למחרוזות בציטוט יחיד.
האם ה-JSON שלי מועלה במקום כלשהו? מס 'ההמרה מתרחשת כולה בדפדפן שלך באמצעות JavaScript במכשיר שלך.JSON שלך לעולם לא הועלה, נרשם או מאוחסן, והכלי ממשיך לעבוד עם הרשת מנותקת לאחר שהדף נטען.
האם ממיר מערך JSON ל-PHP פנוי? כן. זה לגמרי בחינם ללא הרשמה, ללא סימן מים וללא מכסה שימוש. המר כמה מסמכי JSON למערכי PHP שאתה צריך עבור פרויקטים אישיים או מסחריים.



