![]() |
![]() |
![]()
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: 24 Pomógł: 3 Dołączył: 25.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
http://php.net/interface#language.oop5.int...es.examples.ex2
Interfejsy rozszerza się stosując słowo kluczowe extends, a nie implements. Dlaczego stworzyłeś własne interfejsy Traversable, Iterator oraz IteratorAggregate? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 16.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
http://php.net/interface#language.oop5.int...es.examples.ex2 Dzieki, cos poszło - jednak terazInterfejsy rozszerza się stosując słowo kluczowe extends, a nie implements. jest zwracany błąd: Fatal error: Cannot redeclare class Iterator Dlaczego stworzyłeś własne interfejsy Traversable, Iterator oraz IteratorAggregate? Wiesz, programowania obiektowego jeszcze się uczę, aw książce, przynajmniej tak mi sie wydaje, że tak "każą" ... Jak inaczej moge skorzystać z wbudowanych interfejsów albo jak mogę uniknąć błędu? Ten post edytował guci0 16.10.2008, 21:44:58 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jak inaczej moge skorzystać z wbudowanych interfejsów? Po prostu skorzystać. One są wbudowane.Zerknij na to co już masz: SPL - Standard PHP Library |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 18:30 |