Bu örnekte, önce bir temel sınıf ve bu sınıfın bir türevini tanımlayacağız. Temel sınıf, genel olarak bitkileri, yenilebilirlikleri ve renkleri ile tanımlayacak. Lahana alt sınıfı, sebzenin pişirilebilir olup olmadığını bulan bir başka yöntem ekleyecek.
Örnek 1 - Sınıf Tanımları
Bitki
<?php
// Üye özellikler ve yöntemlerle temel sınıf
class Bitki {
public $yenir;
public $renk;
public $isim;
public function __construct($yenir="", $renk="yeşil", $isim="")
{
$this->yenir = $yenir;
$this->renk = $renk;
$this->isim = $isim;
}
public function yenir_mi()
{
return $this->yenir;
}
public function ne_renk()
{
return $this->renk;
}
public function ismi()
{
return $this->isim;
}
} // Bitki sınıfının sonu
?>
Lahana
<?php
class Lahana extends Bitki {
public $pişirilir = "evet";
public function __construct($yenir="evet", $renk="yeşil", $isim="Lahana")
{
parent::__construct($yenir, $renk, $isim);
}
public function pişirilir()
{
$this->pişirilir = "evet";
}
public function pişirilir_mi()
{
return $this->pişirilir;
}
} // Lahana sınıfının sonu
?>
Bu sınıflardan iki nesne örnekleyip, ata sınıfları dahil bunlar hakkındaki tüm bilgiyi çıktılayacağız. Ayrıca, değişkenlerin çıktılarını güzelleştirmek için bazı ek işlevler tanımlayacağız.
Örnek 2 dnm.php
<?php
// sınıfları yüklemek için otomatik yükleyiciyi kaydet
spl_autoload_register();
function printProperties($obj)
{
foreach (get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
function printMethods($obj)
{
$arr = get_class_methods(get_class($obj));
foreach ($arr as $method) {
echo "\t$method() işlevi\n";
}
}
function objectBelongsTo($obj, $class)
{
if (is_subclass_of($obj, $class)) {
echo "$obj->isim, $class sınıfının alt sınıfı olan ";
echo get_class($obj), " sınıfındandır.\n";
} else {
echo "$obj->isim, $class sınıfının alt sınıflarından değildir.\n";
}
}
// 2 nesne örnekleyelim
$sebze = new Bitki("belki", "yeşil", "sebze");
$tombul = new Lahana("evet", "mavi", "Brüksel Lahanası");
// Nesne bilgilerini basalım
echo "sebze: " . get_class($sebze) . " sınıfında\n";
echo "tombul: " . get_class($tombul) . " sınıfında";
echo ", ATA sınıfı " . get_parent_class($tombul) . "\n";
// Özellikleri gösterelim
echo "\nsebze: Özellikler\n";
printProperties($sebze);
echo "\n\ntombul: Özellikler\n";
printProperties($tombul);
// ve tompul yöntemleri
echo "\ntombul: Yöntemler\n";
printMethods($tombul);
echo "\nEbeveynler:\n";
objectBelongsTo($tombul, Lahana::class);
objectBelongsTo($tombul, Bitki::class);
?>
Yukarıdaki örneklerin çıktısı:
sebze: Bitki sınıfında tombul: Lahana sınıfında, ATA sınıfı Bitki sebze: Özellikler yenir = belki renk = yeşil isim = sebze tombul: Özellikler pişirilir = evet yenir = evet renk = mavi isim = Brüksel Lahanası tombul: Yöntemler __construct() işlevi pişirilir() işlevi pişirilir_mi() işlevi yenir_mi() işlevi ne_renk() işlevi ismi() işlevi Ebeveynler: Brüksel Lahanası, Lahana sınıfının alt sınıflarından değildir. Brüksel Lahanası, Bitki sınıfının alt sınıfı olan Lahana sınıfındandır.
Yukarıdaki örnekte önemli şeylerden biri, $tombul nesnesinin Lahana sınıfının bir örneği, Lahana sınıfının ise Bitki sınıfının ise bir alt sınıfı oluşudur.