![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 16.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie!
Panowie lub Panie, mam ogromna prośbe - siędzie nad tym już kilka ładnych godzin i zaraz będe zmuszony poszukać młotka i dać sobie w głowę ... Mam takie KLASY i INTERFEJSY: Kod interface Traversable {} interface Iterator implements Traversable { function current(); function key(); function next(); function rewind(); function valid(); } interface IteratorAggregate implements Traversable { public function getIterator(); } i ... Kod class Collection implements IteratorAggregate { ... public function getIterator() { $this->_checkCallback(); return new CollectionIterator(clone $this); } ... } class CollectionIterator implements Iterator { private $_collection; private $_currIndex = 0; private $_keys; function __construct(Collection $objCol) { $this->_collection = $objCol; $this->_keys = $this->_collection->keys(); } function rewind() { $this->_currIndex = 0; } function valid() { return $this->_currIndex < $this->_collection->length(); } function key() { return $this->_keys[$this->_currIndex]; } function current() { return $this->_collection->getItem($this->_keys[$this->_currIndex]); } function next() { $this->_currIndex++; } } Oczywiście nie wkleiłem całego kodu klasy Collection, sądzę iż nie ma teraz takiej potrzeby. Przykład i implementacja klas/interfejsów biorę z ksiązki PHP5. Zaawansowane programowanie. Wiem, książka ma sporo błędów i głównie właśnie jakieś psikusy zrobione są z interfejsami, choć w tym przypadku mogę się mylić... Potrzebuje pomocy, wywolując program APACHE zwraca: Parse error: syntax error, unexpected T_IMPLEMENTS, expecting '{' in /Applications/MAMP/htdocs/folder/test/folder_base/class/class.Collection.php on line 8 Już nie wiem jak mam sobie z tym poradzić, dlatego jeszcze raz proszę o POMOC! Z góry BARDZO dziękuje wszystkim zaangażowanym w rozwiązaniu problemu Pozdrawiam Paweł - guci0 P.S. Tak na marginesie to, coś słabo działa edytor na forum (BBCODE) Ten post edytował guci0 16.10.2008, 21:01:22 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Pozwólcie że ze swoim pytaniem dokleję się tutaj.
Po jakiego diabła ten interfejs, do czego on służy, po co on jest? Cytat Interface to detect a class is traversable using foreach. Wszyyyyystkoooo jaaasneee...I nadal nie rozumiem po co on jest. Wszystkie kolekcje działają mi z zaimplementowanym tylko interfejsem Iterator. |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
~orglee to masz za jakiś tandetny słownik.
Zerknij tu: Traversable Zresztą wywaliłem z Twojego posta fragmety słownika. Nie wiem po kiego wała je wkleiłeś. Zajmowały sporo miejsca, robiły śmietnik a jak sam zauważyłeś nic nie wnoszą i nie tłumaczą. Po jakiego diabła ten interfejs, do czego on służy, po co on jest? Czasami stosuje się puste interfejsy. W Javie mówi się na nie Marker Interface. Interfejsy takie nie nakazują implementacji czegokolwiek (bo niby co miałyby nakazywać skoro są puste) tylko oznaczają coś. Dobrym przykładem jest Clonable, interfejs nie wprowadza konieczności implementowania czegokolwiek tylko wskazuje na klasy, których obiekty mogą być klonowane.Takim właśnie interfejsem jest Traversable. Oznacza on obiekty klas, które pozwalają na przechodzenie po sobie za pomocą pętli. Wszystkie kolekcje działają mi z zaimplementowanym tylko interfejsem Iterator. Działa Ci bo Iterator dziedziczy po Traversable.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 08:23 |