class-bindirme-overloading

Overloading Özellik Ya Da Methodlari Dinamik Olarak Yaratmak Anlamina Gelir.
__call, __get ve __set Overloading Methodlarıdır.
Bu Metohodları Kullanarak Olmayan Method Ve Üyelere sanki Varmış Gibi alternetif Secenek Yaratılır.
Overloading Methodu Sadece public Olarak Tanımlanır.
<?php
class Mysql
{
public $db = null;

public function __construct()
{
$this->db = @new mysqli('localhost', 'root', '', 'deneme');
if ($this->db->connect_error) {
die($this->db->connect_error);
}
$this->db->set_charset('utf8');
}

public function sorgu($lim = 10)
{
$sorgu = $this->db->query("SELECT * FROM magazin
ORDER BY id DESC limit $lim");
while ($row = $sorgu->fetch_assoc()) {
$kayit[] = $row;
}
return $kayit;
}

public function ekle($baslik, $detay)
{
return $this->db->query("INSERT INTO magazin
VALUES(null,'$baslik','$detay')") or die($this->db->error);
}

public function guncelle($baslik, $detay, $id)
{
return $this->db->query("UPDATE magazin
SET baslik='$baslik',detay='$detay'
WHERE id='$id'") or die($this->db->error);
}

public function sil($id)
{
return $this->db->query("DELETE FROM magazin
WHERE id='$id'") or die($this->db->error);
}
}

class magazin extends Mysql
{
public $sonuclar;

public function __construct()
{
parent::__construct();
}

public function __set($ad, $deger)
{
if ($ad == 'ekle') {
$this->ekle($deger['baslik'], $deger['detay']);
} elseif ($ad == 'guncelle') {
$this->guncelle($deger['baslik'], $deger['detay'], $deger['id']);
} elseif ($ad == 'sil') {
$this->sil($deger['id']);
}
}

public function __call($ad, $limit)
{
$this->sonuclar = $this->sorgu($limit[0]);
foreach ($this->sonuclar as $sira => $bilgi) {
echo '<h3>' . $bilgi['baslik'] . '</h3>';
echo $bilgi['detay'];
}
}
}

try {
$magazin = new magazin();
$dizi['baslik'] = 'Magazin başlık 3';
$dizi['detay'] = 'Magazin detay 3';
$magazin->ekle = $dizi; //olmayan özellik,__set devreye girer

$dizi['baslik'] = 'Magazin başlık 1.1';
$dizi['detay'] = 'Magazin detay 1.1';
$dizi['id'] = 1;
$magazin->guncelle = $dizi; //olmayan özellik,__set devreye girer
$dizi['id'] = 1;
$magazin->sil = $dizi; //olmayan özellik,__set devreye girer
$magazin->sonuclar(3); //olmayan metot,__call devreye girer
}
catch (Exception $ex) {
echo $ex->getMessage();
}
?>
Cıktısı :
Bindirme ( Overloading )
Magazin başlık 3
Magazin detay 3
Magazin başlık 3
Magazin detay 3
Magazin başlık 3
Magazin detay 3