Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP] Iterowanie / interface Traversable
guci0
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Morkai
post
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?
Go to the top of the page
+Quote Post
guci0
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.10.2008

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


Cytat(Morkai @ 16.10.2008, 22:09:55 ) *
http://php.net/interface#language.oop5.int...es.examples.ex2
Interfejsy rozszerza się stosując słowo kluczowe extends, a nie implements.
Dzieki, cos poszło - jednak teraz
jest zwracany błąd: Fatal error: Cannot redeclare class Iterator
Cytat(Morkai @ 16.10.2008, 22:09:55 ) *
Dlaczego stworzyłeś własne interfejsy Traversable, Iterator oraz IteratorAggregate?
Wiesz, programowania obiektowego jeszcze się uczę, a
w 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
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(guci0 @ 16.10.2008, 22:41:31 ) *
Jak inaczej moge skorzystać z wbudowanych interfejsów?
Po prostu skorzystać. One są wbudowane.
Zerknij na to co już masz: SPL - Standard PHP Library
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 18:30