1.4 Zend Framework — Быстрый старт. Создание модели и таблицы базы данных

Zend, “Zend Framework Quick Start. Create a Model and Database Table”, public translation into Russian from English More about this translation.

Translate into another language.

Для начала, давайте рассмотрим: где находяться эти классы, и каким образом мы найдем их? По умолчанию в проекте, который мы создали, присутствует экземпляр автозагрузчика (autoloader). Мы можем подключать и другие автозагрузчики, таким образом, что бы он знал где искать разные классы. Обычно, мы хотим наши различные классы MVC группировать в одном и том же каталоге -- в нашем случае, application/ -- и чаще всего используем общий префикс.

Zend_Controller_Front имеет понятие "модули" ("modules"), которые являються отдельными мини-приложениями. Модули повторяют структуру каталогов, которую инструменты zf устанавливают в application/, и все классы находящиеся внутри, предполагается, что начинаются с общего префикса, имени модуля. application/ сам есть модуль -- модуль "default" или "application". По сути, мы устанавливаем автозагрузку для ресурсов на эту директории.

Zend_Application_Module_Autoloader обеспечивает функциональностью необходимой для сопоставления различных ресурсов модуля и соответствующих каталогов, а так же обеспечивает стандартный механизм именования. Экземпляр класса создаеться по умолчанию во время инициализации объекта загрузчика (bootstrap object); ваш загрузчик приложения будет по умолчанию использовать префикс модуля "Application". По сути, наши модули, формы, и классы таблиц все начинаются с префикса класса "Application_".

Теперь, давайте рассмотрим что представляет из себя гостевая книга. Как правило, это просто список записей с коментариями, меткой времени (timestamp), и, зачастую, email-адресом. Допустим мы будем хранить их в базе данных, нам так же необходим уникальный идендификатор для каждой записи. Нам, вероятней всего, будет необходимо иметь возможность сохранять запись, выбирать отдельные записи, и извлекать все записи. По сути, API модели простой гостевой книги может выглядеть примерно так:

01. // application/models/Guestbook.php

02.

03. class Application_Model_Guestbook

04. {

05. protected $_comment;

06. protected $_created;

07. protected $_email;

08. protected $_id;

09.

10. public function __set($name, $value);

11. public function __get($name);

12.

13. public function setComment($text);

14. public function getComment();

15.

16. public function setEmail($email);

17. public function getEmail();

18.

19. public function setCreated($ts);

20. public function getCreated();

21.

22. public function setId($id);

23. public function getId();

24. }

25.

26. class Application_Model_GuestbookMapper

27. {

28. public function save(Application_Model_Guestbook $guestbook);

29. public function find($id);

30. public function fetchAll();

31. }

__get() и __set() обеспечивает удобный механизм для доступа к отдельным свойствам записей, и посредник (proxy) для других геттеров (getters) и сеттеров (setters). Они так же помогут гарантировать что только свойства из рекомендованого списка (whitelist) будут доступны в объекте.

find() и fetchAll() обеспечивают возможность извлекать одну запись и все записи, в то время как save() заботиться о сохранении записи в хранилище данных.

Теперь с этого места, мы можем начинать думать о настройке нашей базы данных.

Во-первых мы должны инициализировать наш ресурс БД. В равной степенни с ресурсом Layout и View, мы можем обеспечить конфигурирование ресурса БД. Мы можем сделать это с помощью команды zf configure db-adapter:

01. % zf configure db-adapter \

02. > 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook.db"' \

03. > production

04. A db configuration for the production has been written to the application config file.

05.

06. % zf configure db-adapter \

07. > 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-testing.db"' \

08. > testing

09. A db configuration for the production has been written to the application config file.

10.

11. % zf configure db-adapter \

12. > 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-dev.db"' \

13. > development

14. A db configuration for the production has been written to the application config file.

Теперь отредактируйте ваш файл application/configs/application.ini, где вы увидите следующие строки добавленые в соответствующие секции.

01. ; application/configs/application.ini

02.

03. [production]

04. ; ...

05. resources.db.adapter = "PDO_SQLITE"

06. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook.db"

07.

08. [testing : production]

09. ; ...

10. resources.db.adapter = "PDO_SQLITE"

11. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-testing.db"

12.

13. [development : production]

14. ; ...

15. resources.db.adapter = "PDO_SQLITE"

16. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-dev.db"

Ваш конечный файл конфигурации должен выглядеть следующим образом:

01. ; application/configs/application.ini

02.

03. [production]

04. phpSettings.display_startup_errors = 0

05. phpSettings.display_errors = 0

06. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"

07. bootstrap.class = "Bootstrap"

08. appnamespace = "Application"

09. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

10. resources.frontController.params.displayExceptions = 0

11. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

12. resources.view[] =

13. resources.db.adapter = "PDO_SQLITE"

14. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook.db"

15.

16. [staging : production]

17.

18. [testing : production]

19. phpSettings.display_startup_errors = 1

20. phpSettings.display_errors = 1

21. resources.db.adapter = "PDO_SQLITE"

22. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-testing.db"

23.

24. [development : production]

25. phpSettings.display_startup_errors = 1

26. phpSettings.display_errors = 1

27. resources.db.adapter = "PDO_SQLITE"

28. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-dev.db"

Заметьте, что база(ы) данных будет храниться в data/db/. Создайте эти каталоги, и сделайте их доступными для записи. На unix-подобных системах, вы можете сделать это следующим образом:

Pages: ← previous Ctrl next
1 2 3 4 5

Original (English): Zend Framework Quick Start. Create a Model and Database Table

Translation: © antdmi, Владимир, whitebug .

translated.by crowd

Like this translation? Share it or bookmark!