![]() |
איך פועלת מערכת טמפלטים
אוקיי אז עלה לי רעיון לפרוייקט אבל נתקעתי בשלב שאני לא יודע איך לעשות את המערכת טמפלטים ביעילות, הייתי שמח אם הייתם מנחים אותי באיזה אלגוריתם נחמד.
תודה לעוזרים. |
|
אחלה תודה הבנתי :P
עכשיו צריך להכין לעצמי CLASS כזה :P נ.ב אחלה בלוג |
בזבוז זמן לכתוב מערכת טמפלטים
אקסטרה זמני עיבוד וטרנזלציה של הקוד עדיף לבצע דבר כזה בהנחה שיש לך את הקוד של הטמפלט במשתנה כלשהו לבצע PHP קוד:
וגם תוכל לשלב PHP לכל דבר בתור הקוד שלך הייתי ממליץ לעשות OUTPUT BUFFERING בנוסף ולהדפיס בסוף בהצלחה |
ציטוט:
מה גם שהפונקצייה eval חסומה בהרבה שרתים מטעמי אבטחה, חשבת על זה? |
ציטוט:
|
ציטוט:
-!- לא -!- תבניות, סוף הסיפור. ואדים כמו שכתבתי לך כבר באחד הפוסטים שלך, אחלה בלוג. |
אתם כולכם קופצים בלי לחשוב אחרי ואדים
מערכות טמפלטים זה חסרון גדול ואני יגיד לכם גם למה על כל טמפלט שנטען יש לבצע: * טעינה שלו * PARSING של הקוד והצבת משתנים, ביצוע לולאות וכד' * קבלת הקוד החדש לאחר ההצבות * שמירה בבאפר או הדפסה בשיטה שלי יש לבצע: * טעינה * שמירה בבאפר או הדפסה כיוון שאתם מריצים את זה בתור PHP כמו שהוא אז מה שתקבלו זה פשוט פלט לכל דבר שניתן לעשות בו שימוש לכל דבר, זה כמו ECHO של סטרינג כלשהו היתרון כאן זה שלא צריך ללמוד ולזכור איך עובדת המערכת טמפלטים שלכם כיוון שזה ממש RAW PHP, עוד יתרון זה שלא צריך לבצע PARSING של הקוד לפני הדפסה ועוד יתרון שאתם לא צריכים לכתוב את כל ההמרות האלה ובנוסף אם אתם לא רוצים לכתוב המרות של לולאות וכו' אתם פשוט יכולים לשלב PHP בקוד שלכם ואין כאן שום פגם באבטחה הקוד PHP שמורץ עם הEVAL זה קוד שאתם כתבתם אם הוא לא מאובטח זה בעיה שלכם וזה לא שום חור אבטחה יש עוד נקודה שיש לחשוב עליה החסרון הגדול של מערכת טמפלטים זה שאם מישהו ימשיך לכתוב את הקוד שלכם (משהו שאני מניח שלא נהוג אצלכם, אצלי הוא נהוג והרבה) הוא יצטרך ללמוד את המבנה של המערכת טמפלטים שלכם ואת הPARSING שלה וזה מכה רצינית כשזה קורה.. (מניסיון..) |
ניצן לא הבנתי אותך
אתה מעודד שימוש בהפרדת הקוד PHP מ HTML אם לא תתן דוגמא בבקשה לדף עם שילוב של PHP ו HTML |
ציטוט:
אין ספק שהיתרון ב RAW PHP זה שאין צורך בעיבוד של הנתונים בו. והנכונות להשתמש במערכת מסוג זה תלויה במפתח ובקהל היעד של כל מערכת. אם המערכת תיהיה מוצעת לקהל יעד רחב ביניהם משתמשים שאין להם ניסיון בשפה אז מערכת מסוג זה תיהיה עדיפה (גם אם יקח לה עוד חצי שנייה לעיבוד) מאחר ולכל משתמש פשוט שלא מבין בתכנות יהיה יותר קל לכתוב <if> </if> מאשר <?php if(): ?> <?php endif;? זה גם מקצר לו את הקוד וגם יותר קריא. לעומת מערכת שהיא סגורה ורק לקהל יעד ספציפי שיודעים לתכנת אז כמובן שעדיף ללכת על קוד PHP ללא צורך במערכת כלשהי. |
חח לא נפלתי עליך :-)
דווקא בפוסט שלך שקישרת אליו סימנת בסוף שמה שאני מציע יותר יעיל (או שזה בפוסט אחר אצלך באתר חח) ממ תראה בהנחה שאתה הולך לכתוב למערכת בPHP אז אין סיבה שלא להשתמש בRAW PHP בטמפלטים אני פשוט מניסון שלי ממש התחרפנתי כשהייתי צריך ללמוד את הסינטקס מערכות טמפלטים מחדש, זה מעיק ולחינם בדרך כלל (פעם אחת זה היה כ'כ קיצוני שהחלטתי להמיר את זה לRAW חח) |
אני כן מסכים איתך ניצן שאין טעם לבנות מערכת טמפלטינג, זה לדעתי טעות, אבל פשוט להפריד עד כמה שאפשר PHP מHTML, ולהשתמש פשוט בסינטקס של PHP בIFים ולולאת ומשתנים ולא יותר מזה.
כל כך הרבה פריצות יכולות לבוא מEVAL שאם במקרה ושכחת לאבטח איבר קטן אחד הנזק שיכול להיגרם הוא עצום, לכן אני עובד עם אינקלוד פשוט. |
ואדים המערכת שלך מסובכת מידי.
אני מצטרף לניצן, זו שיטה הרבה יותר פשוטה, ואם רוצים לעשות tags בקוד אפשר לטעון את הקוד למשתנה להריץ עליו פארסינג ולעשות evaluate.. |
לא הבנתי חברים
בתור מתכנת מה לעשות אני משתמש בדבר כזה http://massassi.com/bTemplate/ להפריד ב PHP ל HTML זה די קליל אני מאמין שכל מתכנת אחרי 5 דקות של לימוד יבין זה לא טוב? אז מה ההכי טוב לעשות שהיה מסודר תודה |
ציטוט:
|
התשובה היא פשוטה. ומה שאני הולך לומר לך זה מניסיון של שנים, הרבה טעויות במהלך הזמן ופתרונם במהלך שנותי בתור מתכנת.
זה פשוט מאוד, קודם כל תשאל לאיזה קהל יעד המערכת הולכת להיות מכוונת אליו. אם קהל היעד הוא כלל עולמי/ארצי שזה אומר שכל משתמש יוכל להוריד את זה ולהשתמש בזה, התשובה היא חד משמעית! מערכת טמפלייט ללא ספק! אם קהל היעד הוא אתה או מתכנת אחר או משהו פנימי בחברה או בכלל משתמשים שיש להם ניסיון עבודה עם PHP אז גם כאן התשובה היא חד משמעית! קוד PHP רגיל בתוך קבצי HTML , ללא שום EVAL. פשוט מאוד תצור קבצי .phtml תגדיר את השרת שיקרא קבצים עם סיומת זו כקבצי PHP רגילים וכל ה HTML יהיה שם ותוך כדי תוכל לעשות <?php echo $something; ?> או בשיטה הקצרה: <?=$something;?> אפשר להתווכח שעות על נושאים כאלה, ואפשר פשוט ללמוד ממשהו שכבר התנסה בזה בעבר (בידיוק בנושא הספציפי הזה) ובסופו של דבר הגיע למסקנות הנלמדות. מכאן זה שיקול דעת של כל אחד מה יותר עדיף לו לעשות. |
ציטוט:
|
כפי שכבר אמרתי. לא. תשמור את הקבצים בסיומת לדוגמא .phtml ואז תגדיר בשרת שקבצים בסיומת .phtml הם בידיוק כמו קבצים בסיומת .php ואז השרת יעבד אותם בצורת קוד PHP.
|
ציטוט:
ניקח לדוגמא users.phtml , האם אני קורא לו דרך require או שאני עושה לו eval? |
require כמובן. אפשר גם לכתוב פונקציה שתדפיס קובץ תצוגה כלשהו ולהעביר אליה פרמטרים בנוסף. ככה שיהיה ניתן לדוגמא להגדיר פרמטר בקוד ה PHP שלך בשם var$ ואז בקובץ הטמפלייט יהיה ניתן להשתמש בו.
|
ציטוט:
PHP קוד:
|
אני משתמש בזה:
PHP קוד:
PHP קוד:
PHP קוד:
|
לפי דעתי OB לא צריך לשמש במערכת....
יש פעמים שבהם חייבים להשתמש ב-OB (אגב lack של תמיכה מ-PHP בנוגע להצגת נתונים, לדוגמא מ-phpinfo), אבל בטמפלייט? אני ממש לא אוהב את זה, אני מעדיף להשתמש יותר בקבצי סקין עם <if> (כאשר אני משתמש בעוד כמה דברים כדי לקצר תהליכים), נכון שזה דורש גם parsing של הקוד - אבל לפי דעתי זה יותר דינאמי ויותר נוח. נכון שבסופו של דבר - עדיף בלי קלאסים, בלי מערכת טמפלייטים, בלי גרשיים כפולות ("), לדאוג שהשם של המשתמש יהיה כמה שיותר קצר... אבל היי! יש גבול לרמה של היעילות שצריך שתיהיה.... קוד PHP מתקמפל בכל הרצה, זה מספיק... אתה תחסוך את האקסטרה זמן אם תשתמש ב-APC בשביל העניין.... אני מעדיף שהמערכת שלי תרוץ 50.1 שניות ולא 50 שניות אבל אני אדע שאחר כך כשאצטרך לבצע בה שינויים, זה לא יגזול ממני כמעט שום מאמץ.. חוץ מזה שאתה יכול גם לבצע cache לטמפלייטס... |
אבל אתה תדע שאתה צריך לדעת סינטקס בעוד שאם יבוא בחור חדש ויעיף מבט על הקוד וירצה לשפץ אותו ולעשות לו מתיחת פנים הוא יצטרך לקרוא את המערכת טמפלטים שלך,ף ללמוד אותה ואז להתחיל לעבוד
ד'א ואדים הסינטקס הבא אמור להכנס בPHP6 כמו שאני זוכר חח <?php=$var;?> (הגיע הזמן.. ?> לא תומך תמיד ואם לא צריך לעשות PARSING) וואדים מתישהו בעבר בדקתי את זה מכל הבאים include(); require(); require_once(); include_once(); האינקלוד הרגיל הכי מהיר יש לי גם הסבר לזה אפילו מבלי להריץ את הדברים אבל אני עוד רגע נרדם.. |
ציטוט:
ואני גם לא ממש מכיר את שניכם, אבל אני חייב להגיב לזה - אתה כל הזמן מחפש אותו בקטנות. איפה לשים לו רגל, ככה זה נראה כלפי חוץ(לי לפחות). |
כמו שאמרתי כל אחד יקח את מה שהוא למד כאן וינסה את זה בעצמו. לאחר מכן הוא ידע עם מה הכי כדי לו להשתמש.
|
אני בכל אופן בחרתי להשתמש בשיטה של evaluate לקוד.
PHP קוד:
פשוט וקל, לא עושה בעיות לא מסבך לא כלום. מניסיון. |
ציטוט:
ואממ לא אני לא מחפש אף אחד - באמת שלא (: וואדים - בחור נחמד, גדול (יש בינינו כמה שנים טובות) ופיקח |Lol| |
אני בסך הכל בן 21, אז אלה אם כן אתה בן 14 אז אני לא כל כך גדול. :)
|
ציטוט:
X: "פלוני, אתה מתכנת לא טוב" W: "היי - אל תגיד לאנשים את זה" X: "אוקיי, MasterT, אתה מתכנת לא טוב" בכל מקרה, וואדים, בשבילי תמיד תיהיה גדול P= אגב, ב-PML (PHP Mailing List) למיטב זכרוני לפני מספר ימים מישהו הציגאת השאלה של include vs eval, תעיף מבט =] |
כן **** מישהו הציג (דרך אג בנחמד שאתה מפרסם שם חח שמתי לב אתה זה **** כן?)
אבל זה היה שאלה על משהו אחר לגמרי מה ההבדל בין לבצע אינקלוד לבין לבצע EVAL לתוך של הקובץ שאתה רוצה לעשות לו אינקלוד.. בגדול יותר טוב להשתמש באינקלוד כי אחרכך יש לך אופציה לבצע אוטימיזציה עם EACCELERATOR ודומיו אבל מישהו כתב שם שהייתה לו בעיה עם הסקופ והפונקציות המאונקלדות (לא זוכר בדיוק - הנה לינק לMARC: http://marc.info/?l=php-general&m=123685482428695&w=2 אתם מוזמנים לקרוא זה התגובה של רוברט) להת' |
ציטוט:
אגב, require ו-include הן גם מובנית לחלוטין - לא? תיקון טעות, גם eval מובנית |
למעשה ההבדל בין לאנקלד קובץ לבין לעשות לו Evaluate במקרה הזו הוא רק בפארסינג...
|
כל הזמנים הם GMT +2. הזמן כעת הוא 20:00. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ