Genişletilmiş Dizi Nesne Sınıfı

<?php
class genisletilmisDiziNesnesi extends ArrayObject {
	private $dizi;
	public function __construct(){
		if (is_array(func_get_arg(0)))
		$this->dizi = func_get_arg(0);
		else
		$this->dizi = func_get_args();
		parent::__construct($this->dizi);
	}
	public function each($callback){
		$yineleyici = $this->getIterator();
		while($yineleyici->valid()) {
			$callback($yineleyici->current());
			$yineleyici->next();
		}
	}
	public function haric(){
		$args = func_get_args();
		return array_values(array_diff($this->dizi,$args));
	}
	public function ilk(){
		return $this->dizi[0];
	}
	public function sira($deger){
		return array_search($deger,$this->dizi);
	}
	public function denetle(){
		echo print_r($this->dizi, true);
	}
	public function son(){
		return $this->dizi[count($this->dizi)-1];
	}
	public function terscevir($uygula=false){
		if(!$uygula){
			return array_reverse($this->dizi);
		}else{
			$dizi = array_reverse($this->dizi);
			$this->dizi = $dizi;
			parent::__construct($this->dizi);
			return $this->dizi;
		}
	}
	public function shift(){
		$eleman = array_shift($this->dizi);
		parent::__construct($this->dizi);
		return $eleman;
	}
	public function pop(){
		$eleman = array_pop($this->dizi);
		parent::__construct($this->dizi);
		return $eleman;
	}
}
function yazdir($deger){
  echo $deger;
}
$dizi = new genisletilmisDiziNesnesi([1,2,3,4,5,6]);
$dizi->each("yazdir");
echo "<br>";
print_r($dizi->haric(2,3,4));
$dizi->denetle();
echo $dizi->sira(5);
echo "<br>";
print_r($dizi->terscevir());
print_r($dizi->terscevir(true));
echo $dizi->shift();
echo "<br>";
echo $dizi->pop();
echo "<br>";
echo $dizi->son();
echo "<br>";
echo $dizi->ilk();
?>

Çıktısı

123456
Array
(
    [0] => 1
    [1] => 5
    [2] => 6
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)
4
Array
(
    [0] => 6
    [1] => 5
    [2] => 4
    [3] => 3
    [4] => 2
    [5] => 1
)
Array
(
    [0] => 6
    [1] => 5
    [2] => 4
    [3] => 3
    [4] => 2
    [5] => 1
)
6
1
2
5