![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 24.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
W jaki sposób odczytujecie plik konfiguracyjny w swoich aplikacjach?
Załóżmy że w wielu klasach odczytywana jest tablica z pliku np.
Jednak za każym razem gdy wywołam
Plik jest wczytywany od nowa. Nie mogę użyć include_once ponieważ wtedy będzie odczytany tylko 1 plik konfiguracyjny i to zablokuje odczyt drugiego. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zawsze możesz zrobić to na zasadzie takiej leniwej fabryki. Już mówię o co chodzi:
Załóżmy że w wielu miejscach używasz
Odczytywanie pliku "plik.php" za każdym razem to strata wydajności itd itp... Co zrobić? Jeżeli nie zapisujesz konfiguracji z poziomu PHP (choć to też w sumie nie stanowiło by problemu) najlepiej zrobić to tak: 1. dodaj do klasy config tablicę (private) o kluczach będących nazwami plików. 2. przy każdym wywołaniu sprawdzaj czy istnieje tablica z indeksem takim jak plik z argumentu metody ::read(...) 3. jeśli taki rekord istnieje w tablicy - zwracasz go 4. jeśli nie - metoda robi swoje, ładuje plik, zapisuje go do tablicy z indeksem równym nazwie pliku i zwraca 5. każde kolejne wywołanie idzie wtedy z tablicy (bez ponownego ładowania pliku) ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 24.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
W FW np CI mój kontroler musi dziedziczyć po kontrolerze CI. Czy jest sens takiego rozwiązania, że Główny kontroler wczytuje cfg jako
A później w innym kontrolerze dziedziczę po nim ten kod przez extends i mogę w swojej klasię odczytać $this->config ? Czy to na jedno wyjdzie? Ten post edytował pijanyadmin 3.01.2012, 11:32:38 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli dobrze Cię zrozumiałem to samo dziedziczenie kodu wykona tą funkcję znowu więc będzie miał tak naprawdę 2 razy dobieranie się do tego pliku "plik.php" najpierw FC potem zwykły C :/
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 24.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Sephirus - A co rozumiesz przez "Jeżeli nie zapisujesz konfiguracji z poziomu PHP" ?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W tych przykładach odczytujesz konfigurację z pliku php - ale czy planujesz na przykład ją z poziomu PHP zapisywać czyli na przykład:
![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 24.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
W zasadzie to mam z tym problem nadal...
Nie wiem w którym miejscu robię błąd, ale nadal są includowane pliki... Kod Config::get('test2.ini.php'); Config::get('test.ini.php'); Config::get('test2.ini.php'); Powinno wczytać plik test2.ini.php i test.ini.php. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jaki to ma związek z mvc, no ale dobra niech będzie że ma.
Na swoje potrzeby, zresztą nie tylko ja tak robię, mam klasę która przechowuje konfigurację i nic więcej nie robi (nie pobiera żadnych plików, ani ich nie nadpisuje). Gdzieś na początku wrzucam tablicę konfiguracji do klasy:
i dostęp w obrębie całej aplikacji mam taki sam. Nie muszę wczytywać żadnych plików itp. A cała klasa konfiguracji to zwykłe setery i getery plus jedna prywatna właściwość, która przechowuje konfigurację i na której operują setery/getery. Czyli u ciebie metody: read, load moim zdaniem są zbędne. No chyba że masz różne pliki konfiguracyjne, ale to i tak powinieneś robić to inaczej. EDIT: chyba zajarzyłem o co ci chodzi. Zrób sobie tymczasowo wszystkie właściwości publiczne i zaraz po wywołaniu:
sprawdź sobie co trzymasz w tych właściwościach: I powoli całość rozkładaj na czynniki pierwsze. Tak samo powinieneś zresztą zrobić z ładowaniem konfiguracji: Ten post edytował by_ikar 3.01.2012, 14:18:16 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 24.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
by_ikar - ale właśnie co to jest $this->loadConfig('config/settings.yml') ? Przecież wczytujesz i tak ten plik. Więc jak się do niego odwołujesz? I tak mam wiele plików konfiguracyjnych.
edycja: Tak, rozbiłem je i zawierają to co mają zawierać. Prócz tego że tablica jest tylko jedna. W powyższym kodzie nie zapisuje się 2 kluczy i nie wiem dlaczego. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
EDIT: Popatrz jak to tutaj jest zrobione https://github.com/kohana/core/blob/3.2/mas...kohana/i18n.php Ten post edytował skowron-line 3.01.2012, 14:59:02 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok wszystko jest ok i jasne - linijka 42:
![]() EDIT: ooo Sorry @up - dłuugo pisałem odpowiedź bo mi przeszkodzili - dubel nie celowy ![]() Ten post edytował Sephirus 3.01.2012, 15:18:44 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 01:56 |