![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 13 Dołączył: 31.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
dopiero zaczynam swoją zabawę z obiektowym php. Teraz mam pytanie do bardziej zaawansowanych koderów czy moje rozwiązanie jest dobre. Więc tak mam folder gdzie tworzę pliki z klasami dajmy 'Mysql.class.php'. W pliku library.php ładuje wszystkie klasy
w pliku system.php ładuje library.php i config.php Natomiast w pliku index.php mam
Teraz żeby uzyskać dostęp do mysql w klasie Main, metodzie prace mam coś takiego
Czy ogólnie jest to poprawne podejście? Czy raczej wystrzegać się global? Jak to inaczej rozwiązać? Proszę mi nie proponować Zend'a itd. bo najpier chciałbym liznąć troszkę obiektówki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam i z góry dziękuje za pomoc.
Powód edycji: Proszę używać tagu [PHP] do umieszczania kodu PHP. Dodane także tagi do tematu.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 13 Dołączył: 31.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Poczytałem i wydaje mi się, że już to łapie... Dosyć pomocy był ten wpis http://athlan.pl/singleton-registry-map/ tylko autor pisze tutaj, że singleton nie jest najlepszym rozwiązaniem, ale przeszukują fora widzę, że jest to kwestia bardzo sporna które rozwiązanie jest najlepsze... Robię tak... do każdej klasy dodaje
Kod private function __construct() { Później wystarczy tylko } ######################################################## public static function instance() { if(!self::$_oInstance instanceof self) { self::$_oInstance = new self; } return self::$_oInstance; } Kod $mysql = MySql::instance(); Z tego co rozumiem to MySql::instance(); Utworzy obiekt, a jeśli istnieje to go zwróci, dzięki temu mogę działać tą klasą po całym "systemie" bez obaw i nie muszę się martwić nadpisaniem i mam pewność, że zawsze korzystam z tego samego wywołania obiektu. Czy dobrze to rozumiem i czy jest to dobre (nienajlepsze) rozwiązanie na używanie obiektowego php? Odchodząc od tematu mam jeszcze pytanie co do config.php w którym są przetrzymywane zmienne systemowe. Czy wstawiać tam stałe, żeby były dostępne wszędzie czy zmienne i wczytywać w funkcji jak globalne? Czy może jeszcze jakoś inaczej?
$zmienna = $mysql->metoda() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 15:56 |