Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] kilka problemów początkującego
Forum PHP.pl > Forum > PHP > Frameworki
MitS
Witam wszystkich,

wyszła nowa wersja ZF 1.11 a z nią kilka nowości m.in. obsługa plików yaml i z tym też będzie wiązać się moje pierwsze pytanie.
1. Jak całkowicie wyzbyć się plików ini z configa a zastąpić je yml? - chodzi mi o ładowanie w pliku public/index.php tam z defaulta brany jest application.ini, jak chce zmienic na yaml to niestety nie czyta tego dobrze.

2. jak zmienić ścieżkę do layoutu obecnie jest to domyślnie application/layout/scripts/layout.phtml a chcialbym by była taka: application/modules/NAZWA_MODUŁU/views/index.phtml <- to byłby domyślny layout dla danego modułu

3. jak zmienić domyślną ścieżkę do widoków tzn z: application/modules/NAZWA_MODUŁU/views/scripts/CONTROLLER/ACTION.phtml do application/modules/NAZWA_MODUŁU/views/CONTROLLER/ACTION

?
Będe wdzięczny za odpowiedź
Daimos
1. Zamiast korzystać z Zend_Config_Ini, musisz po prostu skorzystać z Zend_Config_Yaml
http://framework.zend.com/manual/en/zend.c...pters.yaml.html

2. Obawiam się, że tu nie obejdzie się bez jakiegoś plugina, który by dynamicznie podmieniał ścieżkę, w zależności od modułu

3. Tutaj podejmę próbę wybicia Ci z głowy takiego procesu smile.gif scripts nie jest bez potrzeby, bo w katalogu views możesz umieszczać też inne rzeczy jak np. helpery
W ostateczności, jak już faktycznie chcesz takie coś wykonać, to czyt. pkt 2
Deallas
1. Tylko po co? Plik ini jest szybciej wczytywany niż plik yaml a czytelność obu jest niemalże identyczna
2. https://github.com/deallas/Zend-Framework-E.../master/Layout/ - przykładowa aplikacja z oddzielnymi layoutami dla modułów
3. Możesz skorzystać z funkcji setScriptPath() klasy Zend_View, możesz to odpowiednio ustawić w bootstrapie
Mephistofeles
O ile pliki są cache'owane, to oba są wczytywane tak samo szybko.
A Yaml ma kilka zalet w porównaniu do Ini, np. brak sztywno narzuconej struktury (zapisz w ini coś więcej niż sekcje i wartości).
Deallas
Zrób sobie benchmark parse_ini_file vs include i zobaczysz ze plik ini jest szybciej parsowany niż nawet PHP. Cachowanie więc jest zbędne. W przypadku yamla mamy zaś funkcje yaml_parse_file która nie jest standardowo dostępna w PHP i plik musi być parsowany przez PHP.
Cytat
A Yaml ma kilka zalet w porównaniu do Ini, np. brak sztywno narzuconej struktury (zapisz w ini coś więcej niż sekcje i wartości).

Jeśli korzystasz z Zend_Config_Ini to da sięsmile.gif Jest on co prawda wolniejszy od Zend_Config_Php bo dodatkowo parsuje dane ale rozszerza on możliwości funkcji standardowej parse_ini_file. Możesz np zapisać tablice:
Kod
tablica.0 ='...'
tablica.1 = '...'

i wówczas zwróci ci:
Kod
array(
  0 => '...',
  1 => '...'
)

Możesz korzystać ze stałych zdefiniowanych wcześniej w PHP:
Kod
library.path = APPLICATION_PATH . '/../library'


Ale jak chcesz/chcecie korzystać z yamla to proszę bardzo. Czy zapiszesz dane w formacie ini, xml, yaml, json Zend_Config daje nam wszędzie te same możliwości
Mephistofeles
To, że parse_ini jest szybsze jest dosyć logiczne, w końcu funkcja napisana jest w C i nie musi przetwarzać całego skryptu, tylko prosty w budowie plik.
Jednak konfiguracja jest dosyć statyczna, i może być przechowywana w jakimś cache'u, APC czy coś podobnego.

Nie używam ZFa, ale nie uważasz, że to (tablice ini z ZF) jest mniej czytelne rozwiązanie od Yamla?
Deallas
Może i jest, ale przyzwyczajenie zawsze zwycięża;) Druga sprawa, wszystkie tutoriale w sieci dotyczące ZF opierają się tylko i wyłącznie na plikach ini z czego wynika, że będzie on jeszcze długo, długo królował w ZF. Programistom nie będzie się chciało przypisywać plików konfiguracyjnych na yamla bo i po co jak mają gotowca. Samo przepisanie to oczywiście żaden problem, ale niektórzy są po prostu zbyt leniwi;)
Mephistofeles
Do przepisania można sobie prosty skrypt napisać winksmiley.jpg.
Deallas
No można i nawet dużo bym się przy tym nie napracowałsmile.gif Odczytuje plik ini przy pomocy Zend_Config i zapisuje plik yaml przy pomocy Zend_Config_Writer: http://framework.zend.com/manual/en/zend.c...troduction.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.