Ö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, yenebilir olup olmadıkları ve renkleri ile tanımlayacak. Lahana alt sınıfı, sebzeyi pişirmek için bir yöntem ile pişirilmiş olup olmadığını bulan bir başka yöntem ekleyecek.

Örnek 1 sınıflar.inc

<?php

// Üye özellikler ve yöntemlerle temel sınıf
class Bitki {

   var 
$yenir;
   var 
$renk;

   function 
Bitki($yenir$renk="yeşil")
   {
       
$this->yenir $yenir;
       
$this->renk $renk;
   }

   function 
yenir_mi()
   {
       return 
$this->yenir;
   }

   function 
ne_renk()
   {
       return 
$this->renk;
   }

// Bitki sınıfının sonu

// temel sınıfı türetelim
class Lahana extends Bikti {

   var 
$pişmiş false;

   function 
Lahana()
   {
       
$this->Bitki(true"yeşil");
   }

   function 
pişir()
   {
       
$this->pişmiş true;
   }

   function 
pişmiş_mi()
   {
       return 
$this->pişmiş;
   }

// 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

<pre>
<?php

include "sınıflar.inc";

// biçemleme işlevleri

function print_vars($obj)
{
foreach (
get_object_vars($obj) as $prop => $val) {
    echo 
"\t$prop = $val\n";
}
}

function 
print_methods($obj)
{
$arr get_class_methods(get_class($obj));
foreach (
$arr as $method) {
    echo 
"\t$method() işlevi\n";
}
}

function 
class_parentage($obj$class)
{
if (
is_subclass_of($GLOBALS[$obj], $class)) {
    echo 
"$obj nesnesinin ait olduğu sınıf: " get_class($$obj);
    echo 
", alt sınıf ise: $class\n";
} else {
    echo 
"$obj nesnesi $class alt sınıfına ait değildir.\n";
}
}

// 2 nesne örnekleyelim

$sebze = new Bitki(true"mavi");
$tombul = new Lahana();

// 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";

// Sebze özelliklerini gösterelim
echo "\nsebze: Özellikler\n";
print_vars($sebze);

// ve tompul yöntemleri
echo "\ntombul: Yöntemler\n";
print_methods($tombul);

echo 
"\nEbeveynler:\n";
class_parentage("tombul""Lahana");
class_parentage("tombul""Bitki");
?>
</pre>

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. Bu bakımdan betiğin son kısmının çıktısı şöyle olur:

   [...]
Ebeveynler:
tombul nesnesi Lahana alt sınıfına ait değildir.
tombul nesnesinin ait olduğu sınıf: Lahana, alt sınıf ise: Bitki

add a note add a note

User Contributed Notes 1 note

up
-1
denisn1 at free dot fr
1 month 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