Zend_View-Abstract.xml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <sect1 id="zend.view.abstract">
  2. <title>Zend_View_Abstract</title>
  3. <para>
  4. <code>Zend_View_Abstract</code> הינו מחלקת הבסיס עליה <code>Zend_View</code> מבוססת; <code>Zend_View</code> בעצמה בסך הכל מרחיבה אותה ומגדירה את המתודה
  5. <code>_run()</code> (אשר מיוחסת לאחר מכן אל <code>render()</code>).
  6. </para>
  7. <para>
  8. מתכנתים רבים רוצים להרחיב את <code>Zend_View_Abstract</code> ולהוסיף פונקציונליות מותאמת אישית,
  9. ובאופן בלתי נמנע נתקלים בבעיות עם העיצוב שלה, המסמך הזה נועד להצגת ההחלטות מאחורי עיצוב הרכיב הזה.
  10. </para>
  11. <para>
  12. <code>Zend_View</code> היא סוג של אנטי-מנוע-טמפלייטס בכך שהיא משתמשת ב PHP בתור מנוע טמפלייט.
  13. כתוצאה מכך כל הפונקציות של PHP קיימות, וסקריפטים של תצוגה מקבלים את כל האובייקטים הקיימים.
  14. </para>
  15. <para>
  16. <code>Zend_View::_run()</code> מבצע את הדבר הבא:
  17. </para>
  18. <programlisting role="php"><![CDATA[
  19. protected function _run()
  20. {
  21. include func_get_arg(0);
  22. }
  23. ]]>
  24. </programlisting>
  25. <para>
  26. לכן, סקריפטים של התצוגה יכולים לגשת לאובייקט הנוכחי (<code>$this</code>), וכל המתודות או המשתמשים של אותו אובייקט.
  27. מאחר וכמה פעולות מבוססת על משתמשים עם גישה וראות מסויימת, זה גורם לבעיה: סקריפט התצוגה יכול לקרוא למתודות מסויימות שהוא לא אמור או לדרוס הגדרות ישירות.
  28. לדוגמא תארו לעצמכם שסקריפט התצוגה ידרוס את <code>$_path</code> או <code>$_file</code> -- כל קריאות נוספות ל <code>render()</code> לא יפעלו.
  29. </para>
  30. <para>
  31. למרבה המזל, PHP 5 מכילה פתרון לבעיה זו עם הגדרות הראות שלה: משתמשים פרטיים לא ניתנים לגישה או דריסה על ידי אובייקט אשר מרחיב מחלקה מסויימת. זה הוביל לעיצוב המחלקה הנוכחית:
  32. מאחר ו <code>Zend_View</code> מרחיב את <code>Zend_View_Abstract</code>, סקריפטי תצוגה מוגבלים רק למתודות וערכים ציבוריים ומוגנים של <code>Zend_View_Abstract</code> --
  33. ולמעשה מגבילים את האפשרויות והפעולות שניתן לבצע, ומאפשר לנו לאבטח איזורים קריטיים במערכת מפני שימוש לא נכון או לא תקני שלהם בסקריפטי תצוגה.
  34. </para>
  35. </sect1>
  36. <!--
  37. vim:se ts=4 sw=4 et:
  38. -->