Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] modele w aplikacji z modułami
Daimos
post 17.10.2010, 13:37:49
Post #1





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam
Ciekawi mnie jakie Wy macie rozwiązania na modele w aplikacjach z modułami.
Kiedy ustawimy sobie moduły, autoloader automatycznie nam dopisuje ścieżkę do modeli "zbiorczych", które są w katalogu głównym aplikacji, a teraz co z modelami, które mają być dedykowane dla danego modułu?
Czyli jak wywołać model, który będzie np. w katalogu:
Cytat
application/module/NAZWAJAKAS/models/ModelTestowy.php

Tam autoloader sam już nie wejdzie, trzeba sobie radzić. Niektórzy robią to dodając include_paths do każdego modułu, inni piszą plugin, który dodaje include_path oddzielnie dla każdego modułu, np:
  1. public function dispatchLoopStartup(Zend_Controller_Request_Abstract $req)
  2. {
  3. $moduleName = $req->getModuleName();
  4. PATH_SEPARATOR . APPLICATION_PATH . '/modules/' . $moduleName . '/models');
  5. }

Macie na to jakieś ciekawe rozwiązania?


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
eai
post 17.10.2010, 14:11:04
Post #2





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----


1. Pierwsza rada, to zanim zaczniesz kombinować smile.gif to przeczytaj dokładnie manual.
http://framework.zend.com/manual/en/zend.a...sources.modules
http://framework.zend.com/manual/en/learni....resources.html
http://framework.zend.com/manual/en/projec...filesystem.html
http://framework.zend.com/manual/en/zend.c...er.modular.html
http://framework.zend.com/manual/en/zend.a...-operation.html

2. A teraz rozwiązanie:
W pliku konfiguracyjnym aplikacji "application/configs/application.ini" dodaj wpis:
Kod
resources.modules[] =

Taki wpis spowoduje wywołanie klas Bootstrap dla poszczególnych modułów (jeśli takie klasy istnieją).

Następnie w każdym katalogu modułu stwórz plik Bootstrap.php, w który zdefiniuj klasę o nazwię Nazwamodułu_Bootstrap
Np. dla modułu default:
  1. <?php
  2. class Default_Bootstrap extends Zend_Application_Module_Bootstrap {
  3.  
  4. }

Dla modułu admin:
  1. <?php
  2. class Admin_Bootstrap extends Zend_Application_Module_Bootstrap {
  3.  
  4. }

Ta klasa niejawnie (bo tego nie widać), zarejestruje przestrzenie nazw dla modułów w których znajduje się Bootstrap.php. Domyślna przestrzeń nazw to.
Model dla katalogu models, Form dla katalogu forms, Plugin dla katalogu plugins, Service dla katalogu services.


Przykład (moduł default)
application/modules/default/controllers
application/modules/default/models
application/modules/default/forms
application/modules/default/plugins
application/modules/default/services

model definiujesz jako klasę Default_Model_Table w pliku application/modules/default/models/Table.php

reszta analogicznie smile.gif


Proste nie? Wystarczy poczytać smile.gif

A tak przy okazji. Zacząłem tworzyć samouczek dla chętnych poznania Zend Frameworka.
Projekt zamieściłem na http://code.google.com/p/zf-samouczek/ do pobrania przez svn.
Generalnie jest to działająca aplikacji na Zend Framework'u, z obfitymi komentarzami i odsyłaczami do manuala dla opornych smile.gif

Ten post edytował eai 17.10.2010, 14:15:13
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 13:37