Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] tworzenie iteracji w obiekcie
cesyn
post 27.07.2010, 00:31:31
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 27.07.2010

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


Witam wszystkich,

Mam takie pytanie chcę uzyskać taki efekt;
  1. Dirs Object
  2. (
  3. [wynik] => Array
  4. (
  5. [0] => Array
  6. (
  7. [name] => ..
  8. [path] => /
  9.  
  10. )
  11.  
  12. [1] => Array
  13. (
  14. [name] => plik2.doc
  15. [path] => /var/hhh
  16.  
  17. )
  18.  
  19. [2] => Array
  20. (
  21. [name] => plik.doc
  22. [path] => /home/
  23.  
  24. )
  25.  
  26. )
  27.  
  28.  
  29. )


Czy wykonanie tego w taki sposób jest zgodne z oop?
  1.  
  2. class Dirs {
  3.  
  4. function Dirs()
  5. {
  6.  
  7. }
  8. function setName($name)
  9. {
  10. $this->nazwa=$name;
  11. }
  12. function setPath($path)
  13. {
  14. $this->sciezka=$path;
  15. }
  16. function wyk()
  17. {
  18. $this->wynik[] = array('name'=>$this->nazwa,'path'=>$this->sciezka);
  19. }
  20. }
  21. class Jakas{
  22.  
  23. function Jakas()
  24. {
  25. require_once('dirs.class.php');
  26. $dirs = new Dirs();
  27. $this->dirs = $dirs;
  28.  
  29. $this->dirs->setName("..");
  30. $this->dirs->setPath('/');
  31. $this->dir->wyk();
  32.  
  33. $this->dirs->setName("plik2.doc");
  34. $this->dirs->setPath('/var/hhh');
  35. $this->dir->wyk();
  36.  
  37. $this->dirs->setName("plik.doc");
  38. $this->dirs->setPath('/home/');
  39. $this->dir->wyk();
  40. }
  41. }


Z góry dziękuję za wszystkie sugestie party.gif

Pozdrawiam

Ten post edytował cesyn 27.07.2010, 00:33:09
Go to the top of the page
+Quote Post
everth
post 27.07.2010, 00:52:37
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Na moje śpiące oko nie jest. Oblukaj sobie poniższe:
  1. class Dirs extends ArrayObject {
  2. public $name;
  3. public $path;
  4.  
  5. function __construct($name,$path) {
  6. $this->name;
  7. $this->path;
  8. }
  9.  
  10. function offsetSet($index=NULL, Dirs $value) {
  11. parent::offsetSet($index,$value);
  12. }
  13. }

Masz klasę Dirs która dziedziczy po ArrayObject, to oznacza że można ją traktować jako tablice. Można ją wielokrotnie zagnieżdżać.
  1. $root = new Dirs('root','/');
  2.  
  3. $root[] = new Dirs('porno','/porno');
  4. $root[] = new Dirs('erotyka','/erotyka');
  5.  
  6. $root[0][] = new Dirs('bdsm','/porno/bdsm');

I tak dalej. Można do tego dopisać kod który automatycznie tworzy ścieżki/validuje wprowadzone.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
cesyn
post 27.07.2010, 18:00:39
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 27.07.2010

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


Dzięki za odpowiedź, ale powiedzmy że nie chce korzystać z dobrodziejstw SPL i ten fragment kodu chciałbym napisać w PHP4. To mogłoby to tak wyglądać jak przedstawiłem w pierwszym poście czy nadal da się to zrobić w lepszy sposób?

Pozdrawiam
Go to the top of the page
+Quote Post
Crozin
post 27.07.2010, 18:31:28
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Skąd tak durny pomysł by pisać cokolwiek pod PHP4? OOP w 4-ce można sobie darować (w 5-tce jest ono ubogie), ale jak już chcesz to lepszym pomysłem byłoby zrobienie jednego obiektu, który reprezentowałby kolekcje i dziesiątek obiektów (innej klasy), które by się do tej kolekcji wrzucało.
Go to the top of the page
+Quote Post
everth
post 28.07.2010, 10:07:25
Post #5





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


W zasadzie to można zrobić tak - Filesystem to drzewo zawierające pliki i katalogi. Pliki zawsze są liśćmi drzewa a katalogi mogą być liśćmi lub być gałęziami. Mamy więc obiekty File i Dir (ten jest kolekcją), obie dziedziczą po jakiejś generycznej klasie która zapewnia pola wspólne im obu (czas dostępu, prawa,...) i wspólne metody. Dodatkowo File może też być dziedziczony przez subklasy (Image,Document,Raw, etc.). Jest tu wiele możliwości implementacji tego w OOP.

Nawet można się pokusić o zmapowanie tego drzewa na xml i przeszukiwanie go xpathem (np. "//MojDir/Photo[@mimetype='image/jpeg']). Ale to wymaga większej pracy i wątpię by na razie sobie z tym poradził.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
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 Wersja Lo-Fi Aktualny czas: 6.07.2025 - 16:30