Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Co zamiast tablicy?, w przykładzie Factory Method
madreus
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.10.2007

Ostrzeżenie: (0%)
-----


Witam!
Zaczynam dopiero zdobywać wiedzę o wzorcach projektowych, więc jakby co nie bijcie winksmiley.jpg

W przykładzie z klasą Articles
http://www.phppatterns.com/docs/design/the...method#layering
trafiłem na adnotację, że metoda z tej klasy ładuje całą zawartość tabeli do tablicy, a tak nie powinno się robić.
Cytat
Note: the Articles class above fetches the entire contents of a table and places it in a PHP array. In general this is a bad idea - what if you have 10000+ articles? I’m just doing it here to keep the example code simple (i.e. don’t try this at home).

Stąd moje pytanie, co autor mógł mieć na myśli? Jest jakiś inny (niż tablice), bardziej wydajny sposób operowania na dużych ilościach danych, który można byłoby zastosować w tym przykładzie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
osl
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


autor miał na myśli wczytywanie całej tabeli (prawdopodobnie z jakiejś bazy danych) do tablicy w php, co rzeczywiście na dłuższą metę jest słabym pomysłem winksmiley.jpg
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tablica jest prostsza niż obiekt, stąd będzie wydajniejsza.

A już na pewno mniej pamięciożerna. Jeśli rozważana klasa bazuje na setterach/getterach - tablice 100% będą szybsze.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jeśli dobrze rozumiem, to korzystasz wtedy z ArrayObject.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Pr0100
post
Post #5





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
tablica numeryczna? nie bardzo - predzej asocjacyjna...


Czemu nie? Zawsze myślałeś że jest ona bardziej wydajna (a przypomnę że temat ten dotyczy wydajności a nie wygody)

Cytat
a jezeli mowimy o tablicy bez metod, z wszystkimi zmiennymi publicznymi?


ale jaki ma sens obiekt bez metod? Co uzyskasz wykonując taki zabieg?

Ten post edytował Pr0100 16.06.2009, 12:51:41


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
(a przypomnę że temat ten dotyczy wydajności a nie wygody)

OK, ale wtedy masz problemy z poszukiwaniem kluczy dla danych własności. Ostatecznie zostają jeszcze stałe zawierające indeksy numeryczne, ale podejrzewam, że różnice w prędkości będą się mieściły w granicach błędu statystycznego...

Cytat
ale jaki ma sens obiekt bez metod? Co uzyskasz wykonując taki zabieg?

Można spróbować to podciągnąć pod czytelność i chęć pogrupowania wraz ze stałymi, ale czy ja wiem... No i odchodzi problem widzialności - klasa statyczna...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
.chudy.
post
Post #7





Grupa: Zarejestrowani
Postów: 70
Pomógł: 3
Dołączył: 15.06.2003
Skąd: kosmosu?

Ostrzeżenie: (0%)
-----


Zainteresuj się leniwą konkretyzacją, na forum było już kilka tematów


--------------------
Warsztat#1 ::drum and bass:: Apache2.2 :: PHP 5.2 ::
Go to the top of the page
+Quote Post
dem
post
Post #8





Grupa: Zarejestrowani
Postów: 96
Pomógł: 7
Dołączył: 24.01.2006
Skąd: lublin/wawa

Ostrzeżenie: (0%)
-----


Cytat(erix @ 16.06.2009, 12:04:40 ) *
OK, ale wtedy masz problemy z poszukiwaniem kluczy dla danych własności. Ostatecznie zostają jeszcze stałe zawierające indeksy numeryczne, ale podejrzewam, że różnice w prędkości będą się mieściły w granicach błędu statystycznego...
Można spróbować to podciągnąć pod czytelność i chęć pogrupowania wraz ze stałymi, ale czy ja wiem... No i odchodzi problem widzialności - klasa statyczna...


mozna jescze rowazyc inne struktury danych.. zalezy co chcemy przeszukiwac i jaka chcemy miec wydajnosc...

"jesli nie tablica jako kontener danych to co?"

np drzewo bst, avl, lub moze czerwono czarne?
moze kopiec?
moze koleji fifo albo lifo ?

zalezy jaki efekt koncowy z jaka wydajnoscia chcemy uzyskac...

Ten post edytował dem 17.06.2009, 19:40:28
Go to the top of the page
+Quote Post
plurr
post
Post #9





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


ArrayObject o którym pisał erix jest fajnym rozwiązaniem, dodam przykład z manuala.

  1. <?php
  2. class TestArrayObject extends ArrayObject {  
  3.    public function __set($name, $val) {
  4.        $this[$name] = $val;
  5.    }
  6.  
  7.    public function __get($name) {
  8.        return $this[$name];
  9.    }
  10. }
  11. $obj = new TestArrayObject();
  12. $obj->a = 'aaa';
  13. echo $obj->a . "\n";
  14. ?>


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A po co aż tak?

  1. <?php
  2. $tablica = array();
  3.  
  4. $obj = new ArrayObject($tablica);
  5. $obj->klucz = 'asd';
  6.  
  7. echo $obj->klucz;
  8. ?>

I masz to samo. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
plurr
post
Post #11





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


O prosze, jeszcze prościej. Szkoda że w php nie ma jako takiego głównego obiektu (tj w javie Object), co prawda niby jest stdObj, ale jakieś to kulawe.


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:19