משתנים בPHP - שלום ראיתי שמשתנים בשפת PHP

sr1001

New member
משתנים בPHP - שלום ראיתי שמשתנים בשפת PHP

מסומנים ב$ ללא ציון סוג.
רציתי לשאול אם זה לא גורם לבלבול בזמן דבגינג , או בגים בזמן ריצה , איך אתם מתמודדים עם הדבר הזה.
 

koler

New member
היי , אין עם זה שום בעייה

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

sr1001

New member
האם קומפיילר PHP יודע להזהיר במקרה שמתבצע

פעולה לא חוקית כמו : int + string , או (if(int > object
 
למה להזהיר?

PHP זורם איתך. קוראים לזה type juggling.
יקח לך קצת זמן לצאת מהעולם הישן, אבל כשזה יגיע לא תבין איך עבדת עם המגבלות הקודמות.
 

sr1001

New member
להזהיר - כי לחבר תרנגולות ואגבניות - לא ברור

איזה תוצאה תקבל
 
לא ברור לך. לי זה ברור מאוד.

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

bnayal

New member
זה לא עולם ישן בכלל.

השפות המובילות (אחרי PHP כמובן
) לדוגמא ג'אווה, C# ואם אני לא טועה גם רובי ופייתון הן strong typed.
יש לזה יתרונות ויש לזה חסרונות. לי זה לפעמים חסר בPHP, אבל בד"כ זה מקל מאוד על החיים
 
Java ו-#C הן שפות מקומפלות

אז ברור שהן תהיינה strong typed.
זה הייתרון בשפת סקריפטינג שלא קיים בשפות מקומפלות.
 
הן רצות מעל VM, לא בדיוק מקומפלות

js ו PHP גם יכולות לרוץ מעל VM
V8 עובד פחות או יותר כמו VM וגם php hiphop היום עובד בתצורה של VM וכבר לא converter ל CPP
https://github.com/facebook/hiphop-php/wiki
זה בגדול לא מה שגורם להחלטה האם לעשות שפה strong או לא
 
יש אין אינספור מאמרים בנושא

בין אם על הקונספט של weak typing ובין אם ספציפית לPHP
יש אנשים שיצלבו את זה, יש אנשים שיעריכו את זה.

בגדול אין (כמעט) פעולה בלתי חוקית. המנוע של השפה פשוט יעשה cast ל type הנכון ויבצע את הפעולה.

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

בPHP משהו שכן משמעותי זה הסוג של אובייקטים שנקבע בעצם לפי המחלקה ללדוגמא type hinting בשביל reflections
 
ויש code linters ויש להגדיר סוג ב phpdocs

ואז הלינטרים יכולים לעשות את מה שאתה רוצה להשיג.
 
למעלה