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.

Przykład 19-20. 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();

?>

Powyższy przykład wyświetli:

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.

Przykład 19-21. 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";
}
?>

Powyższy przykład wyświetli:

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.

Przykład 19-22. 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";
}
?>

Powyższy przykład wyświetli:

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:

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



Język PHP to dzisiaj powszechnie przyjęty standard, podstawa tworzenia dynamicznych stron WWW, opartych na bazach danych.

PHP to język skryptowy. Znaczy to, że jest to język nie kompilowalny. Program jest wykonywany przez interpreter na podstawie jego kodu źródłowego. Język PHP to element technologii internetowej SERVER-SIDE. Znaczy to, że kod języka jest wykonywany od strony serwera (na serwerze).

W jakim celu używac PHP? Po co to komu?

Załóżmy, że potrzebujemy takiej strony internetowej, która wyświetli zawsze bieżącą datę. Dzięki technologii PHP, datę i godzinę odczytywać można z miejsca gdzie wykonuje się skrypt, np. gdy serwer znajduje się w USA a my w Polsce to widoczna jest różnica w czasie który zostanie wyświetlony.

pozycjonowanie dla dzieci gry gry przez przeglądarkę gry wyścigi tani kredyt tanie serwery wirtualneusuwanie zmarszczek, wiza do rosji, wizy do rosji, agroturystyka kaszuby, wizy do rosji gdańsk, Zakopane domki, obsługa szkoleń, melatonina