Foreach a obiekty

Za pomocą pętli foreach możemy przejść kolejno przez właściwości klasy.

Pętla foreach wywołana poza ciałem klasy przejdzie jedynie przez publiczne właściwości klasy.

Chcąc przejść przez wszystkie właściwości musimy umieścić pętle foreach wewnątrz metody klasy.


<?php
class Wypisz{
    public $imie;
    public $nazwisko;
    public $wiek;
    private $tajne;
    protected $tajne2;
    public function __construct(
          $imie,$nazwisko,$wiek,$tajne,$tajne2)
    {
        $this->imie = $imie;
        $this->nazwisko = $nazwisko;
        $this->wiek = $wiek;
        $this->tajne = $tajne;
        $this->tajne2 = $tajne2;
    }
    
    public function przejrzyj(){
        echo '<br>wypis dzieku metodzie';
        foreach($this as $klucz => $wartosc){
           echo $klucz.' = '.$wartosc;
        }
    }
}
$zmienna=new Wypisz('Pawel','Kowal',20,7806,'%#');
foreach($zmienna as $klucz => $wartosc){
           echo $klucz.' = '.$wartosc;

           }
$zmienna->przejrzyj();
?>

Foreach a dziedziczenie

Jak pamiętasz, elementy private podczas dziedzicznie nie są dostępne bezpośrednio. Tak więc wywołanie metody wypisz klasy Syn, wypisze jedynie właściwości $Pro i $Pub;