Related Links : Search Engine Optimization | | Search Engine Marketing | Online Marketing | Freelance Programmer| SEO Thailand | SEO Expert | SEO services | PHP Programmer Thailand | SEO Tutorial | What is SEO |

  Home Our SEO Services SEO Expert Consultant Php Programmer Keyword Suggestion Scripts|Articles| Email : sachin {at} jainsachin {dot} com

PHP | Object Iteration | Manual | Tutorial | Help

SEO Services



Website Programming in PHP / MYSQL



SEO Tools




    Friends


      Object Iteration

      Object Iteration

      PHP 5 provides a way for objects to be defined so it is possible to iterate through a list of items, with, for example a foreach statement. By default, all visible properties will be used for the iteration.

      Example #1 Simple Object Iteration

      <?php
      class MyClass
      {
          public 
      $var1 'value 1';
          public 
      $var2 'value 2';
          public 
      $var3 'value 3';

          protected 
      $protected 'protected var';
          private   
      $private   'private var';

          function 
      iterateVisible() {
             echo 
      "MyClass::iterateVisible:\n";
             foreach(
      $this as $key => $value) {
                 print 
      "$key => $value\n";
             }
          }
      }

      $class = new MyClass();

      foreach(
      $class as $key => $value) {
          print 
      "$key => $value\n";
      }
      echo 
      "\n";


      $class->iterateVisible();

      ?>

      The above example will output:

      var1 => value 1
      var2 => value 2
      var3 => value 3
      
      MyClass::iterateVisible:
      var1 => value 1
      var2 => value 2
      var3 => value 3
      protected => protected var
      private => private var
      

      As the output shows, the foreach iterated through all visible variables that can be accessed. To take it a step further you can implement one of PHP 5's internal interface named Iterator. This allows the object to decide what and how the object will be iterated.

      Example #2 Object Iteration implementing Iterator

      <?php
      class MyIterator implements Iterator
      {
          private 
      $var = array();

          public function 
      __construct($array)
          {
              if (
      is_array($array)) {
                  
      $this->var $array;
              }
          }

          public function 
      rewind() {
              echo 
      "rewinding\n";
              
      reset($this->var);
          }

          public function 
      current() {
              
      $var current($this->var);
              echo 
      "current: $var\n";
              return 
      $var;
          }

          public function 
      key() {
              
      $var key($this->var);
              echo 
      "key: $var\n";
              return 
      $var;
          }

          public function 
      next() {
              
      $var next($this->var);
              echo 
      "next: $var\n";
              return 
      $var;
          }

          public function 
      valid() {
              
      $var $this->current() !== false;
              echo 
      "valid: {$var}\n";
              return 
      $var;
          }
      }

      $values = array(1,2,3);
      $it = new MyIterator($values);

      foreach (
      $it as $a => $b) {
          print 
      "$a: $b\n";
      }
      ?>

      The above example will output:

      rewinding
      current: 1
      valid: 1
      current: 1
      key: 0
      0: 1
      next: 2
      current: 2
      valid: 1
      current: 2
      key: 1
      1: 2
      next: 3
      current: 3
      valid: 1
      current: 3
      key: 2
      2: 3
      next:
      current:
      valid:
      

      You can also define your class so that it doesn't have to define all the Iterator functions by simply implementing the PHP 5 IteratorAggregate interface.

      Example #3 Object Iteration implementing IteratorAggregate

      <?php
      class MyCollection implements IteratorAggregate
      {
          private 
      $items = array();
          private 
      $count 0;

          
      // Required definition of interface IteratorAggregate
          
      public function getIterator() {
              return new 
      MyIterator($this->items);
          }

          public function 
      add($value) {
              
      $this->items[$this->count++] = $value;
          }
      }

      $coll = new MyCollection();
      $coll->add('value 1');
      $coll->add('value 2');
      $coll->add('value 3');

      foreach (
      $coll as $key => $val) {
          echo 
      "key/value: [$key -> $val]\n\n";
      }
      ?>

      The above example will output:

      rewinding
      current: value 1
      valid: 1
      current: value 1
      key: 0
      key/value: [0 -> value 1]
      
      next: value 2
      current: value 2
      valid: 1
      current: value 2
      key: 1
      key/value: [1 -> value 2]
      
      next: value 3
      current: value 3
      valid: 1
      current: value 3
      key: 2
      key/value: [2 -> value 3]
      
      next:
      current:
      valid:
      

      Note: For more examples of iterators, see the SPL Extension.


      SEO Tutorial / Articles





      Php / Mysql Tutorial



      Articles



        Other Topics



        SEO by Jainsachin