Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP]Gdzie przechowywać dużo danych
PawelC
post
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Hej (IMG:style_emoticons/default/smile.gif)
Mam mały problem, piszę sobie w OOP klasę do generowanie profili użytkowników, i imiona będą przechowywane w tablicy. A moje pytanie dotyczy tego gdzie lepiej trzymać te dane w osobnym pliku i z niego losować czy zdecydowanie w klasie. Wizualnie kod na chwile obecną przedstawia się tak:
  1. <?php
  2.  
  3.  
  4. class Profile
  5. {
  6. public function getName()
  7. {
  8. $name=array('Magda','Paweł','Marcin','Iza');
  9. shuffle($name);
  10. return $name[0];
  11. }
  12. }
  13. $profil=new Profile;
  14. echo $profil->getName();
  15.  
  16. ?>

Na chwile obecną są podane tylko 4 imiona, ale w rzeczywistości będą wszystkie męskie i żeńskie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kfc4
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


Najlepiej w bazie, z powodu łatwości przetwarzania.
Go to the top of the page
+Quote Post
laohost
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 12.09.2009

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


Nie lepiej w bazie i losować przez ORDER BY RAND()?
Go to the top of the page
+Quote Post
grn
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 4
Dołączył: 1.06.2009

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


Chcesz stworzyć klasę do generowania profili testowych? Jeśli tak, to sugerowałbym stworzenie:
  • klasy ProfileGenerator, której metoda ProfileGenerator::generate() zwracałaby wygenerowany profil,
  • klasy RandomSelector, która zwracałaby losowo wybrany ciąg przekazany jej wcześniej,
  • klasa ProfileGenerator miałaby atrybut $nameGenerator, który zwracałby losowo wybrane imię. W tej roli miałbyś klasę RandomSelector.

Użycie wyglądałoby mniej więcej tak:
  1. // Argumentem konstruktora jest generator imion
  2. $profileGenerator = new ProfileGenerator(
  3. new RandomSelector(require('names.php'))
  4. );
  5. $profile = $profileGenerator->generate();

W pliku names.php:
  1. return array(
  2. // Tablica imion
  3. );

Oczywiście nic nie stoi na przeszkodzie, aby stworzyć klasy pochodne od RandomSelector, np. RandomDatabaseSelector itp. Należałoby popracować nad nazewnictwem klas i metod, ale sądzę, że taki kierunek byłby dobry.

Co zyskujesz w ten sposób:
  • możesz łatwo użyć kodu ponownie,
  • możesz łatwo modyfikować jego działanie,
  • możesz łatwo testować każdą jego część jak i całość.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 15:45