מסדי נתונים / בחירת מסד הנתונים האידיאלי / הטבעת ביטויים יחסיים במחרוזת Here-Document
הטבעת ביטויים יחסיים במחרוזת Here-Document
במקרה שהביטוי Here-Document חדש לכם, זוהי הדרך בה הוא נוצר:
$string = <<"HERE_DOCUMENT";
You can type all sorts of stuff in here....
You can also $interpolate variables right into your h-d string.
The here-document string will quit when it runs into the label
given at its outset.
HERE_DOCUMENT
ראיתם אותי משתמש בביטוי הזה הרבה מאוד פעמים. הוא יעיל במיוחד ליצירת מחרוזת $SQL שתעבורל $dbh כדי ליצור $cursor בצד הלקוח.
תסתכלו שוב על יצירת $SQL בדוגמת ה $dbh->quote שהצגנו מקודם. נאלצתי ליצור משתנה ביניים $foo, כדי להגיע אל מחרוזת here-document שהיא שיצרה את $SQL, אבל זה לא מושלם. אנחנו יכולים לעשות משהו הרבה יותר מוצלח.
הבעיה היא ש $dbh->quote אמור להחזיר מחרוזת כלשהי, אבל בעצם מחזיר פונקציה (או יותר נכון, רוטינה), דבר שלא יכול להיכנס לתוך here-document לדוגמא, הקוד הבא לא יעבוד:
$SQL = <<"EOT";
insert into my_table(my_column)
values ($dbh->quote($query->param('foo')))
EOT
מה שניתן לעשות זה לרמות את here-document עם הקוד הבא:
$SQL = <<"EOT";
insert into my_table(my_column)
values (${ \($dbh->quote($query->param('foo'))) })
EOT
ה \ מספק הפניה לערך שסופק ע"י ${...} . $dbh->quote מבטל את ההפניה.
תחביר מכוער, אבל הי, פרל מעולם לא התפרסמה בגלל היותה שפה יפה.
עמוד הבא: הטבעת תת-רוטינות >>
|