quickstart-intro-mvc.xml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: yes -->
  4. <sect1 id="learning.quickstart.intro">
  5. <title>Zend Framework &amp; wprowadzenie do MVC</title>
  6. <sect2 id="learning.quickstart.intro.zf">
  7. <title>Zend Framework</title>
  8. <para>
  9. Zend Framework to otwarty, zorientowany obiektowo framework aplikacji webowych
  10. przeznaczony dla <acronym>PHP</acronym> 5. ZF jest często określany mianem 'biblioteki
  11. komponentów' ponieważ składa się z wielu, luźno powiązanych części, których można
  12. używać niezależnie od siebie.
  13. Dodatkowo Zend Framework oferuje zaawansowaną implementację
  14. wzorca projektowego Model-Widok-Kontroler
  15. (Model-View-Controller - <acronym>MVC</acronym>),
  16. która może zostać użyta do skonstruowania podstawowej struktury aplikacji.
  17. Pełna lista komponentów Zend Framework razem z krótkim opisem znajduje się w dziale
  18. <ulink url="http://framework.zend.com/about/components">omówienie komponentów</ulink>.
  19. Wprowadzenie "QuickStart" stanowi wstęp do poznania najczęściej używanych komponentów
  20. Zend Framework, takich jak:
  21. <classname>Zend_Controller</classname>,
  22. <classname>Zend_Layout</classname>,
  23. <classname>Zend_Config</classname>,
  24. <classname>Zend_Db</classname>,
  25. <classname>Zend_Db_Table</classname>,
  26. <classname>Zend_Registry</classname>, oraz kilku klas pomocniczych (view helpers).
  27. </para>
  28. <para>
  29. Za pomocą tych komponentów w ciągu kilkudziesięciu minut zostanie utworzona
  30. prosta aplikacja oparta na bazie danych - księga gości (guest book). Pełny kod
  31. źródłowy tej aplikacji jest dostępny w następujących archiwach:
  32. </para>
  33. <itemizedlist>
  34. <listitem>
  35. <para>
  36. <ulink
  37. url="http://framework.zend.com/demos/ZendFrameworkQuickstart.zip">zip</ulink>
  38. </para>
  39. </listitem>
  40. <listitem>
  41. <para>
  42. <ulink
  43. url="http://framework.zend.com/demos/ZendFrameworkQuickstart.tar.gz">tar.gz</ulink>
  44. </para>
  45. </listitem>
  46. </itemizedlist>
  47. </sect2>
  48. <sect2 id="learning.quickstart.intro.mvc">
  49. <title>Model-View-Controller</title>
  50. <para>
  51. Tak więc, czym dokładnie jest ten będący na ustach wszystkich wzorzec
  52. <acronym>MVC</acronym>? I dlaczego miałoby to mnie obchodzić?
  53. <acronym>MVC</acronym> to o wiele więcej niż kolejny skrót,
  54. który można mimowolnie wplatać w wypowiedź aby spróbować wywrzeć wrażenie na innych;
  55. z biegiem czasu <acronym>MVC</acronym> nie bez przyczyny stał się standardem
  56. projektowania nowoczesnych aplikacji webowych.
  57. Większość aplikacji sieciowych opiera się w znacznej mierze
  58. na funkcjonalnościach, które można podzielić na trzy kategorie: warstwa prezentacji,
  59. logika biznesowa, dostęp do danych.
  60. Wzorzec <acronym>MVC</acronym> ułatwia zaprojektowanie oprogramowania z
  61. zachowaniem odrębności każdej z tych warstw.
  62. W efekcie kod prezentacji może zostać umieszczony w jednej części aplikacji,
  63. logika biznesowa w drugiej, a dostęp do danych w trzeciej.
  64. Wielu programistów przekonało się, że dobrze zdefiniowane odseparowanie jest
  65. nieodzowne dla utrzymania kodu w zorganizowanej
  66. strukturze, zwłaszcza przy projektach wieloosobowych.
  67. </para>
  68. <note>
  69. <title>Więcej informacji</title>
  70. <para>
  71. Omawiany wzorzec można podzielić na następujące części:
  72. </para>
  73. <para>
  74. <inlinegraphic width="321" scale="100" align="center" valign="middle"
  75. fileref="figures/learning.quickstart.intro.mvc.png" format="PNG" />
  76. </para>
  77. <itemizedlist>
  78. <listitem>
  79. <para>
  80. <emphasis>Model</emphasis> - Ta część aplikacji definiuje jej podstawowe
  81. funkcjonalności w sposób mniej lub bardziej abstrakcyjny. Sposób dostępu
  82. do danych oraz logika biznesowa również mogą być zdefiniowane w tym miejscu.
  83. </para>
  84. </listitem>
  85. <listitem>
  86. <para>
  87. <emphasis>View (Widok)</emphasis> - Ten element definiuje wszystko to co
  88. zostaje zaprezentowane użytkownikowi. Najczęściej kontrolery przekazują
  89. dane do każdego z widoków do uformowania i przedstawienia w określonym
  90. formacie. Poprzez widoki następuje również odebranie danych od użytkownika.
  91. W tej części będzie się znajdował kod HTML aplikacji <acronym>MVC</acronym>.
  92. </para>
  93. </listitem>
  94. <listitem>
  95. <para>
  96. <emphasis>Controller (Kontroler)</emphasis> - Ten składnik łączy cały
  97. wzorzec razem. Kontrolery manipulują modelami, decydują o widoku, jaki
  98. zostanie zaprezentowany (na podstawie interakcji z użytkownikiem).
  99. Odpowiadają także za przekazanie danych do widoków lub przekazanie
  100. kontroli do innego kontrolera. Większość ekspertów MVC zaleca
  101. <ulink url="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">
  102. tworzenie możliwie jak najmniejszych kontrolerów</ulink>.
  103. </para>
  104. </listitem>
  105. </itemizedlist>
  106. <para>
  107. Oczywiście, aby zgłębić temat wzorca <acronym>MVC</acronym>
  108. <ulink url="http://ootips.org/mvc-pattern.html">należałoby go rozwinąć</ulink>
  109. ale dla zrozumienia opisywanej aplikacji - księgi gości - powyższy, minimalny
  110. opis powinien wystarczyć.
  111. </para>
  112. </note>
  113. </sect2>
  114. </sect1>