frankx: Iteratoren - mysqli-result-Iterator

Beitrag lesen

Hellihello Tim,

Ja. Ich finde das auch nicht sonderlich schlimm, ein immer wieder verwendetes Muster des Zugriffs zu vereinheitlichen und (wie bei PHP, Python, Ruby *) dafür syntaktischen Zucker anzubieten, um dieses mehr in die Sprache einzubinden. Je weniger jedes Objekt, das auch nur irgendeine Sammlung oder gar einen nicht endenden Strom von Daten darstellt, seine eigene Zugriffsmethoden definieren muss, desto weniger Sonderfälle muss man sich merken.

Fein, dass Du das sagst. Nun dachte ich, es würde nicht nur einen DirectoryIterator und SimpleXMLIterator sondern bestimmt auch einen MySQLResultIterator, fand ich aber nicht, fand nur http://www.santosj.name/programming/php-related/patterns-for-php-iterator/, was ich etwas angepasst habe, weil is_result() nicht auf meine mysqli-resources anzuspringen scheint, und die Anfragen in mysql statt mysqli formuliert warten. Bei beiden Implementierungen bekommt ich aber beim Foreachen als ersten Wert ein bool(true) und erst dann die assoziativen Arrays mit den DB-Eingträgen. Woher aber kommt das "true"?

  
// 080826 - quelle: http://www.santosj.name/programming/php-related/patterns-for-php-iterator/  
//  
class Robs_MysqlIterator implements Iterator  
{  
    protected $row = null;  
    protected $query = null;  
  
    public function __construct($resource)  
    {  
         $this->query = $resource;  
    }  
  
    public function key() { } // Not Implemented  
  
    public function current()  
    {  
        if($this->row != null) {  
            return $this->row;  
        }  
    }  
  
    public function next()  
    {  
        $this->row = mysqli_fetch_assoc($this->query);  
        return $this->row;  
    }  
  
    public function rewind()  
    {  
        $this->row = mysqli_data_seek($this->query, 0);  
        return $this->row;  
    }  
  
    public function valid()  
    {  
        if($this->row == false) {  
            return false;  
        }  
        return true;  
    }  
}  
  

Dank und Gruß,

Robert aka

frankx

--
tryin to multitain  - Globus = Planet != Welt
0 80

Standard PHP Library

frankx
  • php
  1. 0
    Tom
    1. 1
      Cybaer
    2. 0
      Peter Pan
      1. 0
        Tom
        1. 3
          Christian Seiler
          1. 0
            Tom
            1. 0
              Christian Seiler
    3. 0
      Sympathisant
      1. 0
        frankx
        1. 0
          Sympathisant
          1. 0
            frankx
            1. 0
              Sympathisant
            2. 0
              Vinzenz Mai
              1. 0
                Sympathisant
                1. 0

                  Kann das denn sein?

                  Tom
                  • menschelei
                  1. 0
                    Vinzenz Mai
                    1. 0
                      Tom
                  2. 12

                    Eine Lanze für strukturierte Programmierung und OOP

                    Christian Seiler
                    • programmiertechnik
                    1. 0

                      [++] SCNR

                      molily
                      1. 0
                        Tom
                    2. 0
                      Tom
                      1. 0
                        Christian Seiler
                        1. 0

                          [++] Eine Lanze [..]

                          Sympathisant
                          1. 0
                            Dirk Dorweiler
                            1. 0
                              Sympathisant
                              1. 0
                                Vinzenz Mai
                                1. 0
                                  Sympathisant
                                  1. 0
                                    Tom
                                    1. 0
                                      Sympathisant
                                      1. 2

                                        [++] Eine Lanze [..] für die sachbezogen diskussion

                                        frankx
                                      2. 0
                                        Tom
                                        1. 0
                                          Sympathisant
                                          1. 0

                                            Anonymer Stänkerer

                                            Tom
                                            • menschelei
                                            1. 0

                                              Anonymer Stänkerer??

                                              Sympathisant
                      2. 0
                        Dirk Dorweiler
                        1. 0
                          Tom
                          1. 0
                            Sven Rautenberg
                            1. 0

                              Nur eine Zwischennachricht [und ein Spendenaufruf]

                              Tom
                              1. 0
                                Vinzenz Mai
                                1. 0
                                  Tom
                                  1. 0
                                    Timo "God's Boss" Reitz
                                    1. 0
                                      Tom
                                  2. 0
                                    Dirk Dorweiler
                              2. 0
                                Tom
                                1. 0
                                  Sympathisant
                                  1. 0
                                    Tom
                                    1. 0
                                      Sven Rautenberg
                                      1. 0
                                        Tom
                                        1. 0
                                          Sympathisant
                                          • menschelei
                                          1. 0

                                            Es wird Text

                                            Tom
                                            1. 0
                                              Timo "God's Boss" Reitz
                                    2. 3
                                      Sympathisant
                                      1. 0

                                        Abschliessendes...

                                        Sympathisant
                                        • menschelei
                                2. 0

                                  ... die Hoffnung stirbt zuletzt

                                  Vinzenz Mai
                                  1. 0
                                    Tom
                                    1. 0
                                      Christian Seiler
                                    2. 0
                                      Dirk Dorweiler
                                    3. 0
                                      Vinzenz Mai
                                      1. 0
                                        Sven Rautenberg
                                        1. 0

                                          pro und contra OOP

                                          frankx
                                          1. 0
                                            Vinzenz Mai
                                          2. 0
                                            Sven Rautenberg
                                            1. 0
                                              at
                                        2. 0
                                          Sympathisant
                            2. 0
                              Tim Tepaße
                    3. 0
                      Dirk Dorweiler
        2. 0

          (Iteratoren)

          Tim Tepaße
          1. 0

            Iteratoren - mysqli-result-Iterator

            frankx
            1. 0
              Vinzenz Mai
              1. 0
                frankx
            2. 0

              mysqli-result-Iterator looft, aber "Pattern" mit this nicht

              frankx
    4. 0

      99 bottles of beer

      Tom
  2. 0

    Standard PHP Library - SplDoublyLinkedList

    frankx
    1. 0
      dedlfix
      1. 0
        frankx
        1. 0
          dedlfix