Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przeciążenie zmiennej... czy to możliwe ?
Black-Berry
post 5.03.2008, 10:29:30
Post #1





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Swego czasu kiedy pisałem w Delphi było tam jedno fajne rozwiązanie. Można było odwoływać się do elementów w ten sposób:
Kod
creator->items->add("item_1");
//można było również odwoływać się jak do tablicy
creator->items[1]->delete;

Czy można podobny interfejs zrobić w PHP ?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
dr_bonzo
post 5.03.2008, 11:28:53
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


mozna, items jest obiektem, i implementujesz w nim ArrayAccess

edit: hmm, moze to kasowanie nie bedzie takie proste, bo items[ 1 ] zwroci ci inny obiekt (tzn ten item). Pozostaje taka opcja ze items[1] ustawia ci wewnetrzny wskaznik na pierwszy item, i zwraca obiekt creator, na ktorym wywolujesz delete() i on wtedy usuwa item o nr. 1.

tylko czemu nie zrobisz po prostu
creator->items->delete(1)?

Ten post edytował dr_bonzo 5.03.2008, 11:33:56


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Black-Berry
post 6.03.2008, 00:20:59
Post #3





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

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


Takie rozwiązanie stosował Borland Delphi. Jeśli chodzi o obiektowość to chyba można powiedzieć, że to dobry wzór do naśladowania. Poza tym pamiętam, że świetnie się w tym pogramowało. Myślicie, że warto się na tym wzorować ?

@dr_bonzo mógłbyś napisać więcej jak uzystać taki interface?


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 8.03.2008, 14:39:49
Post #4





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Cytat(Black-Berry @ 6.03.2008, 00:20:59 ) *
Takie rozwiązanie stosował Borland Delphi. Jeśli chodzi o obiektowość to chyba można powiedzieć, że to dobry wzór do naśladowania. Myślicie, że warto się na tym wzorować ?


Moim zdaniem to nie dobry wzór do naśladowania. Bo to nie obiektowość, jak masz jakieś odwołania do tablic.
Do tego odwołanie "creator->items->delete(1)" ot items jest właściwością obiektu, a raczej nie powinno się do tego dopuszczać.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Moli
post 8.03.2008, 18:48:29
Post #5





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Możesz to zrobić w np. taki sposób
  1. <?php
  2.  
  3. class creator 
  4. {
  5. public function items ( $id )
  6. {
  7. return new items ( $id ) ;
  8. }
  9. }
  10.  
  11. class items 
  12. {
  13. private $id ;
  14.  
  15. public function __construct ( $id )
  16. {
  17. $this->id = $id ;
  18. }
  19.  
  20. public function delete ( )
  21. {
  22. echo 'DELETE = ' . $this->id ;
  23. }
  24. }
  25.  
  26. $c = new creator ;
  27.  
  28. $c->items(6)->delete ( ) ;
  29.  
  30. ?>

ale tak samo jak poprzednicy uważam że takie rozwiązanie jest mało przyjazne.

ps. Kod to tylko przykład.
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: 14.08.2025 - 03:52