Örnekler

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.

add a note add a note

User Contributed Notes 1 note

up
-76
denisn1 at free dot fr
7 years ago
In order to avoid an "Undefined variable" error, the class_parentage fucntion should have the global $$obj stattement :

function class_parentage($obj, $class) {
    global $$obj;
    if (is_subclass_of($GLOBALS[$obj], $class)) {
        echo "L'objet $obj appartient à la classe " . get_class($$obj);
        echo " une sous-classe de $class\n";
    } else {
        echo "L'object $obj n'appartient pas à une sous-classe $class\n";
    }
}
To Top