PHP 8.0.24 Released!

Примеры

В приведённом ниже примере, мы сначала определим базовый класс и класс его наследующий. Базовый класс описывает овощ: съедобен ли он и какого цвета. Дочерний класс Spinach добавляет метод приготовления овоща и проверки, был ли он уже приготовлен.

Пример #1 Определения классов

Овощ

<?php

class Vegetable {
    public 
$edible;

    public 
$color;

    public function 
__construct($edible$color "green")
    {
        
$this->edible $edible;
        
$this->color $color;
    }

    public function 
isEdible()
    {
        return 
$this->edible;
    }

    public function 
getColor()
    {
        return 
$this->color;
    }
}

?>

Шпинат

<?php

class Spinach extends Vegetable {
    public 
$cooked false;

    public function 
__construct()
    {
        
parent::__construct(true"green");
    }

    public function 
cook()
    {
        
$this->cooked true;
    }

    public function 
isCooked()
    {
        return 
$this->cooked;
    }
}

?>

Теперь мы создадим по объекту каждого класса и распечатаем информацию о них, включая порядок их наследования. Также мы объявим несколько функций-утилит, главным образом для удобного вывода результатов.

Пример #2 test_script.php

<?php

// зарегистрировать автозагрузчик для загрузки классов
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()\n";
    }
}

function 
objectBelongsTo($obj$class)
{
    if (
is_subclass_of($obj$class)) {
        echo 
"Объект принадлежит к классу " get_class($obj);
        echo 
", подкласс $class\n";
    } else {
        echo 
"Объект не принадлежит к подклассу $class\n";
    }
}

// создание 2 объектов
$veggie = new Vegetable(true"blue");
$leafy = new Spinach();

// вывод информации об объектах
echo "вегетарианский: CLASS " get_class($veggie) . "\n";
echo 
"листовой: CLASS " get_class($leafy);
echo 
", PARENT " get_parent_class($leafy) . "\n";

// показать вегетарианские свойства
echo "\nвегетарианский: Свойства\n";
printProperties($veggie);

// и листовые методы
echo "\nleafy: Методы\n";
printMethods($leafy);

echo 
"\nПроисхождение:\n";
objectBelongsTo($leafySpinach::class);
objectBelongsTo($leafyVegetable::class);

?>

Результат выполнения данных примеров:

вегетарианский: CLASS Vegetable
листовой: CLASS Spinach, PARENT Vegetable

вегетарианский: Свойства
        edible = 1
        color = blue

листовой: Методы
        function __construct()
        function cook()
        function isCooked()
        function isEdible()
        function getColor()

Происхождение:
Объект не принадлежит к подклассу Spinach
Объект принадлежит к классу Spinach, подкласс Vegetable

Важно заметить, что, в приведённом выше примере, объект $leafy - экземпляр класса Spinach, который наследует класс Vegetable.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top