[PHP] Sterownik bazy vs mysqli

0

Witam!
Musze stworzyc nieco wiekszy serwis w php i od dluzszego czasu nurtuje mnie jedna rzecz (zaznaczam ze jestem raczej bazodanowcem , stad pytanie dla programistow moze okazac sie banalne).

Czy jest sens tworzyc wlasny sterownik do bazy danych (w sensie klase) czy korzystac z dobrodziejstw mysqli , czy moze rozszerzyc mysqli własna klasa? Do dyspozycji mam php5.

Moglby ktos powiedziec jak to sie robi w "profesjonalnych" projektach :) I czemu akurat stosowac dane rozwiazanie

pozdrawiam

0

Do czasu PHP5 ogromna część projektów komercyjnych porzuca MySQLi na rzecz PDO:MySQL. Ale nie o tym teraz rozważania...

MySQL pełni wyłącznie rolę menedżera połączenia (connector), a nie warstwy dostępu do danych (Data Access Layer). Typowym podejściem do tego tematu w dużych projektach jest wykorzystanie klas pośrednich, które obudowują konkretne funkcjonalności. Na ogół nie dziedziczą one z niczego, co oferuje menedżer połączenia, ale przechowują sobie do niego referencję (podaną często przy tworzeniu) i przez niego wywołują zapytania.

Przykład - hipotetyczna funkcjonalność:

Po naciśnięciu przycisku, jeśli nie zablokowano podstrony, wyświetl listę zdjęć, w przeciwnym razie, przekieruj do strony komunikatu

Pseudokod może wyglądać tak:

if (Baza->MenedzerStron->CzyZablokowano("galeria"))
{
    return Baza->MenedzerObrazkow->PobierzObrazki();
}
else
{
    Przekieruj();
}

Obiekty MenedzerStron oraz MenedzerObrazkow ukrywają funkcjonalność bazodanową pod spodem, dzięki czemu kod jest zorientowany problemowo. To z jednej strony ułatwia jego interpretację, z drugiej dzieli go na małe, niezależne bloki (klasy, metody, pakiety) o samodzielnej funkcjonalności.

Wielu programistów, których znam oddzielnie tworzy klasy warstwy dostępu do danych, a osobno obudowuje menedżer połączenia. W pierwszych implementuje zadania aplikacji, a w drugich funkcje upraszczające komunikację z bazą danych.

0

1 - pdo jest calkiem sensownie napisane
2 - jak duzy serwis to zamiast babrac sie w sterowniki bazy danych pomysl raczej o ORM

0

Do tego moglbys pomyslec rowniez o jakiejs bibliotece wspomagajacej PHP a nawet JavaScript. Ja na przyklad uzywam Zend Framework i Dojo Toolkit. Nie sa one trudne do opanowania.

0

PDO:MySQL bardzo fajna sprawa jak zobaczyłem. W każdym razie do mojego projektu gdzie mam odgórnie narzuconą bazę będe raczej korzystał z mysqli bo czasu jest mało a tym narzędziem po prostu już kiedyś robiłem..
Zend i inne frameworki niestety odpadają, nie można ich używać...

Mam pytanie które bardziej się nadaje do działu Newbie i może się doświadczonym programistą wydawać prostackie:

Mam klasę która generuje jakąś tam stronkę:

<?
class IndexPage extends WebPage {

    $jakaszmienna;

    public function _construct($title){

        $this->title=$title;
    }


    public function buildDiv1(){

        $mysqli = new mysqli('localhost','user','','baza1');
        $mysqli->close();

    }

    public //dziesiatki innych funkcji 

    public function buildFooter(){
        $mysqli = new mysqli('localhost','user','','baza1');
        $mysqli->close();

    }

}
?>

W kilku funkcjach muszę pobrać dane z bazy. I teraz pytanko jak to się poprawnie powinno robić ? Bo pewnie tak jak zrobiłem czyli tworzę nowe połączenie zawsze gdy potrzebuje to nie jest zbyt wydajnie i poprawnie.

Czy stworzyć zmienną w klasie np: $mysqil_con i do nie się odwoływać a w momencie gdy będzie już nie potrzebna zamknąć ?

0

o masakra, to jest sztandarowy przyklad na uzycie singletona :P
btw, obadaj sobie jak sa napisane duze frameworki np: zend, latwo mozna napisac cos bazowego podobnego, ja bym sie na czyms takim wzorowal

1 użytkowników online, w tym zalogowanych: 0, gości: 1