Skocz do zawartości

Konfiguracja programu jak ?


Stelma

Polecane posty

@Wstęp

Naprawdę nie mam pojęcia gdzie wstawić ten temat ponieważ związany jest on chyba z każdym językiem programowania. Najbardziej pasowałby mi pod wzorce projektowe ale takiego działu nie mamy u siebie na forum.

 

 

Pytanie

Często zdarza pisać mi się mini skrypty / portaliki takie naprawdę malutkie z drobnym jedynie cms'em. I za każdym razem ten sam problem. Jak przechowywać konfigurację skryptów ?

 

 

Moje odpowiedzi

 

Baza danych

Piękny pomysł przechowywania danych konfiguracyjnych. Jednak przy dużym natężeniu na portalu pojawi się problem zapchania bazy połączeniami. Już nie mówię o pobieraniu za każdym razem potrzebnych informacji. Po za tym dalej jest problem przechowywania danych do połączenia z bazą. Przecież nie będę je wstawiał w pola klasy..

 

Klasa z polami publicznymi

No w sumie dobry plan. Jednak jego problemem jest to że przy portalu z ~10 klasami będę musiał stworzyć 10 istancji klasy !! dla mnie nie do przyjęcia.

 

Dziedziczenie klasy

No tutaj ciekawiej ciekawiej nie powiem. Jednak problemem jaki ja tutaj widzę to za każdym razem pamiętanie że dana klasa ma dodatkowe pola z dziedziczenia i może powstać konflikt nazewnictwa np user z bazy danych z userem zalogowanym ma 2 pola które by na logike nazywały się podobnie.

 

Singleton

To rozwiązanie gwarantuje pojedyńczą instancje klasy dlatego wielki +. Po za tym kolejna zmienna będzie wskazywała jedynie na adres pamięci co nie zabiera nie potrzebnie pamięci. Nie podoba mi się tylko fakt że będę musiał pamiętać o "stworzeniu" obiektu.

 

Stałe

Spotkałem pare projektów które wykorzystują stałe do przechowywania takich informacji. Jednak czy naprawdę jest sens ? Dla mnie są one nie poręczne jeżeli mają zasięg globalny i tyle.

 

Zmienne globalne

No to już w ogóle kaszana. Może zostać zmodyfikowana w każdym miejscu, a ponadto stwarza problemy przy wprowadzaniu nowej osoby do projektu.

 

Katalog z plikami w środku

Problem taki sam jak z Singletonem za każdym razem trzeba pamiętać o otworzeniu pliku w metodach klas.

 

 

 

 

 

Dlatego pytanie do bardziej zaawansowanych kolegów jak wy to robicie w swoich aplikacjach / skryptach ? Za każdą pomoc będę wdzięczny :)

Link do komentarza
Udostępnij na innych stronach

Z reguły w pliku konfiguracyjnym przechowuję podstawowe dane konfiguracyjne np. login, hasło do bazy danych w formie stałych lub w tablicy. W bazie danych zaś wszystkie pozostałe, mniej istotne ustawienia.

Za dwadzieścia lat bardziej będziesz żałował tego czego nie zrobiłeś, niż tego co zrobiłeś. Więc odwiąż liny, opuść bezpieczną przystań. Złap w żagle pomyślne wiatry. Podróżuj. Śnij. Odkrywaj." M". Twain. Metryczka dla dziecka może być wspaniałą pamiątką narodzin.

Link do komentarza
Udostępnij na innych stronach

Czyli rozwiązanie sprawy masz w bazie. Wszystko łądnie pięknie jednak pojawia się kilka pytań o które chciałbym zapytać.

 

1. Za każdym razem gdy jest potrzeba pobierasz dane ?

2. Pobierasz dane przy tworzeniu obiektu ?

3. Nie uważasz że wydajniej było by zepchnąć dane do pliku ?

Link do komentarza
Udostępnij na innych stronach

Ja wszystkie ustawienia do strony czy modułów trzymam jako zeserializowane w plikach. Bazy danych są dobre raczej do przechowywania dużej liczby informacji i gdy trzeba na nich operować, nie uważam aby trzymanie ustawień w bazie które i tak są prawie w całości pobierane dla każdej strony było dobrym rozwiązaniem.

Link do komentarza
Udostępnij na innych stronach

Wszystko zależy jakie ustawienia mamy na myśli. Jeśli podstawowe np. dane do bazy danych itp. to lepiej przechowywać w pliku. Ustawienia bardziej konkretne wolę trzymać w bazie danych, choćby ze względu na wygodę zarządzania nimi.

 

Dobry system cachowania rozwiąże problem zbyt częstego pobierania danych z bazy danych. Raz wygenerujesz stronę i reszcie osób podrzucasz tylko wynik zapisany do pliku. Nową wygenerujesz sobie w momencie, gdy zostanie wprowadzona jakaś zmiana, wpływająca na jej zawartość.

 

1/2. Ustawienia dla danego obiektu pobieram w momencie jego tworzenia,

3. Zależy od rodzaju skryptu. Jeśli będzie to zwykły CMS to nie widzę sensu. Jeśli natomiast robisz skrypt, który np. jest wywoływany kilkadziesiąt razy na sekundę to w zasadzie pozostaje praca tylko na zserializowanych plikach i optymalizacja do granic możliwości.

Za dwadzieścia lat bardziej będziesz żałował tego czego nie zrobiłeś, niż tego co zrobiłeś. Więc odwiąż liny, opuść bezpieczną przystań. Złap w żagle pomyślne wiatry. Podróżuj. Śnij. Odkrywaj." M". Twain. Metryczka dla dziecka może być wspaniałą pamiątką narodzin.

Link do komentarza
Udostępnij na innych stronach

Singleton

To rozwiązanie gwarantuje pojedyńczą instancje klasy dlatego wielki +. Po za tym kolejna zmienna będzie wskazywała jedynie na adres pamięci co nie zabiera nie potrzebnie pamięci. Nie podoba mi się tylko fakt że będę musiał pamiętać o "stworzeniu" obiektu.

 

Jak to? Jak masz jakiś singleton i statyczny getInstance (czy równoważny) to nie musisz pamiętać o tworzeniu tegoż obiektu bo getInstance po prostu do stworzy. Nie rozumiem Twojego problemu.

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

Nie chodziło mi o tworzenie obiektu, a raczej uchwytu do niego czyli to co zapewnia singleton.

 

Dajmy na to nie chce mieć takiej konstrukcji w każdej klasie

 

<?php

class TClass{

private $conf;

function __construct(){

$this -> conf = TConfig::singleton();

}


}

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...