Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] modele w aplikacji z modułami
Daimos
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Daimos
post
Post #2





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

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


W tym kodzie który napisałeś, wczytuję wszystkie moduły, ale po co? Można to zrobić w ten sposób co Ty, ale wykorzystując plugin i dodając namespace tylko dla jednego modułu, wtedy faktycznie obędzie się bez includepath.

Jeśli chodzi o bootstrapy dodatkowe, no to już mi się bardziej podoba, skoro bootstrap główny jest zawsze używany. Chociaż dalej mam zastrzeżenia co do pustych bootstrapów, w końcu to zawsze dodatkowy plik, a pusty.

Cytat
Zarejestrowane przestrzenie widoczne są w całej aplikacji czyli we wszystkich modułach. Czyli będąc w kontrolerze modułu np. admin możesz wywołać model z modułu np. users

To mnie ciekawi, jak wszystkie przestrzenie są rejestrowane? Czyli odpalają się jednocześnie wszystkie bootstrapy? A nawet jak nie, to tworzą się namespace`y dla każdego modułu? Dziwna sprawa i chyba mało optymalna ;/
Nie chcę mieć dostępu do modelu w module admin, z modułu np user, bo to bez sensu. Od tego mam modele zbiorcze, a te w modułach mają być tylko i wyłącznie dla danego modułu (IMG:style_emoticons/default/smile.gif)

Tylko że teraz zaczyna się seria bezsensownych pytań z mojej strony, więc najpierw postawie aplikację z bootstrapem na każdy moduł i zapoznam się dokładnie z działaniem, wtedy tu wrócę (IMG:style_emoticons/default/smile.gif) póki co dzięki za pomoc

No dobra, aplikacja uruchomiona z przykładowymi dwoma modułami i jest kiepsko... faktycznie dwa bootstrapy są za każdym razem wczytywane, za każdym razem są tworzone dodatkowe namespace`y, coś z tym trzeba by zrobić, bo to przesada, żebym za każdym razem miał 20 bootstrapów, dla każdego po tam chyba 6namespaceów, robi się kombajn (IMG:style_emoticons/default/smile.gif) Mi się to za bardzo nie podoba, zobaczymy jeszcze testy różnych rozwiązań przy 20 modułach (IMG:style_emoticons/default/winksmiley.jpg)

---------------------------------------
Trzeba by zrobić testy porządne, na razie mierząc jedynie czas wykonywania skryptu, rozwiązanie z wieloma bootstrapami przy 20 modułach, wydłuża ładowanie strony o jedną dziesiątą w porównaniu z dodaniem namespace`ów dla jednego, aktualnie potrzebnego modułu z wykorzystaniem pluginu, więc może i różnica niewielka, ale kiedy zależy na optymalizacji... Po co ładować tyle plików? Tworzyć tyle namespace`ów?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ? Tworząc namespace domyślam się że autoloader dodaje to sam do includepath, wtedy każdy załączony plik jest szukany we wszystkich namespejsach ;/ czyli w miarę rozbudowy aplikacji, ta 1/10 czasu wcale już nie będzie taka mała, a jeśli się mylę, to będę wdzięczny za sprowadzenie na ziemię (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował my salsa 17.10.2010, 18:50:51
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 15:03