Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 15.06.2010 Ostrzeżenie: (0%)
|
Witam,
Chciałbym napisać dla odświeżenia pamięci i nauczenia się OOP prostą aplikację. Mam następujący problem, w jaki sposób najszybciej i najłatwiej można _obiektowo_ pobierać i wyświetlać cale zestawy wyników zapytania. Np. w postaci tabeli HTML chcialbym przedstawić zawartość tabeli SQL, korzystając z obiektowego programowania. czy metoda typu: foreach (n;n++) { utwórz obiekt n-ty wykonaj kod prezentacji zniszcz obiekt } ma sens? wiem ze mozna to zrobic w postaci arraya, ale czy mozna arraya z obiektami łatwo mieszać? Dziekuję z góry, Greg. Ten post edytował gburus 8.07.2010, 22:38:45 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 25 Dołączył: 27.01.2007 Ostrzeżenie: (0%)
|
Poczytaj o różnego rodzaju ORM-ach, tj. Doctrine, Propel. Tam jest stricte obiektowe podejście do relacyjnych baz danych.
Btw. jako ciekawostkę możesz także zainteresować się ruchem NoSQL, tam też jest zastosowane obiektowe podejście (np. MongoDB). |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%)
|
Jeśli chcesz pobawić się obiektami to zasinteresuj sie ArrayIteratorem i ArrayObjectem. Jeśli chcesz wykorzystać MySQL-a to może mój kod Ci się sprzyda do operowania na rezultacie zapytania do bazy:
Jeśli chciałbyś używać np PDO to kilka poprawek i powino działać. Jeśli byś coś przerobił to na PDO to podziel się kodem - może się kiedyś sprzydać i będzie gotowe. |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Nic nie stoi na przeszkodzie, żeby użyć tablicy obiektów. W pętli, której przykład podałeś troszkę nie zgadzają się wykonywane czynności, to znaczy jeszcze przed pętlą powinieneś już dysponować tablicą obiektów, a nie tworzyć je przy każdej iteracji.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 15.06.2010 Ostrzeżenie: (0%)
|
Nic nie stoi na przeszkodzie, żeby użyć tablicy obiektów. W pętli, której przykład podałeś troszkę nie zgadzają się wykonywane czynności, to znaczy jeszcze przed pętlą powinieneś już dysponować tablicą obiektów, a nie tworzyć je przy każdej iteracji. Właśnie o tym myślałem, próbowałem znaleźć jakieś informacje czy tak się da ale bezskutecznie. W jaki sposób sie deklaruje taka tablicę obiektów? co do kolejności to zdaję sobie sprawę, że jest ułomna, ale nie wiem zupełnie jak te tablice obiektów sie uzywa - nie ma jak być PHPnubem (IMG:style_emoticons/default/winksmiley.jpg) Dzięki za podpowiedzi, ORM (zwłaszcza propel) wyglądają ciekawie, zwłaszcza ze propel z tego co wiem jest uzywany w Symphony? |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%)
|
W jaki sposób sie deklaruje taka tablicę obiektów? Możesz użyć nawet zwykłej tablicy, lecz nie będzie to zbyt eleganckie - znacznie lepsze będzie stworzenie klasy Collection. Z tego co czytam to widzę, że chcesz się czegoś nauczyć więc nie daję Ci gotowej klasy której używam lecz jedynie interface do niej:
Jeśli będziesz chciał jakąś pomoc to pisz. Pozdrawiam |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 15.06.2010 Ostrzeżenie: (0%)
|
Możesz użyć nawet zwykłej tablicy, lecz nie będzie to zbyt eleganckie - znacznie lepsze będzie stworzenie klasy Collection. Z tego co czytam to widzę, że chcesz się czegoś nauczyć więc nie daję Ci gotowej klasy której używam lecz jedynie interface do niej: (...) Jeśli będziesz chciał jakąś pomoc to pisz. Pozdrawiam Jak rozumiem klasa z takim interfejsem służy do manipulacji rekordami, ale pojedynczymi. W jaki sposob wykorzystać ją, by wykonać następującą czynność: pobrać wszystkie okreslone rekordy z bazy, i wyświetlić je w standardowej formie tabeli. Czy czysto obiektowo da sie to zrobić? Właśnie znalazłem taki kod na php.net:
Wydaje mi się, że cały czas chodziło mi właśnie o to, tylko nie potrafiłem nazwać tej funkcji (fetch_object). Teraz pozostaje to oprawić w klasę(y) i chyba jestem w domu. Jeśli natomiast się mylę, to proszę o poprawienie. Jak rozumiem, powyższy kod powinien iterować po wynikach zapytania, i wyświetlić po kolei wszystkie rekordy? |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Polecam jednak wykorzystać gotowy kontener w postaci splObjectStorage. Od php 5.3.0 biblioteka spl jest domyślnie częścią core php.
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%)
|
Jak rozumiem klasa z takim interfejsem służy do manipulacji rekordami, ale pojedynczymi. W jaki sposob wykorzystać ją, by wykonać następującą czynność: pobrać wszystkie okreslone rekordy z bazy, i wyświetlić je w standardowej formie tabeli. Czy czysto obiektowo da sie to zrobić? Właśnie znalazłem taki kod na php.net:
Ta klasa służy do manipulowania obiektami utworzonymi na podstawie danych wyciągniętych z bazy. Jest to bardzo wygodne jeśli chciałbyś wykonywać dodatkowe operacje - jeśli chcesz to tylko wyświetlić to nie ma potrzeby się bawić w Collectiion. Jeśli byś chciał coś zrobić to mogło by to wyglądać no tak:
Propozycja @darko również jest bardzo ciekawa - spjObjectStorage to taka wbudowana klasa Collection - możesz z niej skorzystać |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 23:49 |