01-08-2008, 14:29
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
שימוש בסוגריים מסולסלות להפרדת אובייקטים
יש לי את הקוד הבא:
קוד PHP:
$foo = new bar();
$cls = new myClass();
אם אני ארצה לכתוב:
קוד PHP:
$cls->$foo->arr['run']();
תיצא לי שגיאת PHP, שזה מה שאנו מצפים כיוון שהמשתנה $foo מתורגם למתודה של האובייקט $cls, כאשר מה שאנחנו באמת רצינו זה:
קוד PHP:
$cls->($foo->arr['run'])();
כלומר שהחלק הבא:
יתורגם לשם של פונקציה השייכת ל-$cls.
( ידוע לי שהשימוש בסוגריים עגולות אינו תקין ומוציא שגיאה, זה רק לשם המחשה של מה שאנחנו רוצים להשיג. )
ניסיתי להשתמש בסוגריים מסולסלות במקום עגולות וזה עבד לי מעולה:
קוד PHP:
$cls->{$foo->arr['run']}();
לא קיבלתי שום שגיאה והכל רץ כרגיל.
השאלה שלי היא ממתי הסינטקס הזה חוקי?
חיפשתי בדוקומנטציה של PHP אבל לא מצאתי דבר על השימוש בסוגריים מסולסלות במקרה הנ"ל.
אם לא שמתם לב זה גם דומה לתירגום משתנים במחרוזת עם {}.
אני משתמש ב-PHP 5.2.6, האם זה תקין גם בגירסאות של 4 ומעלה?
תודה.
|