Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

24.7. Программирование при помощи функций работы с классами в PHP

Рассмотрев все возможные функции, продемонстрируем их применение на практике. Напишем пример с применением имеющихся у нас знаний и покажем основные принципы работы часто встречаемых описанных нами функций классов и объектов.

Для начала создадим два файла, один из которых будет содержать основные классы и подклассы со своими методами и свойствами:

Файл classes-1.inc

<?php

// базовый класс со свойствами и методами

class Vegetable1 {

    var $edible;

    var $color;

    function Vegetable ( $edible, $color="зеленый" ) {

        $this->edible = $edible;

        $this->color = $color;

    }

    function is_edible() {

        return $this->edible;

    }

    function what_color () {

        return this->color;

    }

} // конец класса Vegetable

// расширение базового класса

class Spinach extends Vegetable {

    var $cooked = false;

    function Spinach() {

        $this->Vegetable (true, "зеленый");

    }

    function cook_it() {

        $this->cooked = true;

    }

    function is_cooked() {

        return $this->cooked;

    }

} // конец класса Spinach

?>

В имеющемся файле мы создали два класса, один из которых — главный, второй является распространением первого. Каждый из имеющихся классов имеет свои методы и свойства. Теперь создадим еще один класс, который будет совершать доступ к этому файлу, а также при помощи изученных функций попытаемся получить все необходимые имена классов, методов и т. д.:

Файл test.php

<рre>

<?php

include "classes-1.inc";

// сервисные функции

function print_vars($obj) {

    $arr = get_object_vars($obj);

    while (list($prop, $val) = each($arr))

        echo = "\t$prop = $val\n";

}

function print_methods($obj) {

    $arr = get_class_methods(get_class($obj) );

    foreach($arr as $method)

        echo "\tfunction $method()\n";

}

function $class) {

    global $$obj;

    if (is_subclass_of ($$obj, $class) ) {

        echo "Объект $obj принадлежит классу " .get_class($$obj);

        echo " и является подклассом классу $class\n";

    }

    else {

        echo "Объект $obj не принадлежит подклассу $class\n";

    }

}

// создание двух объектов

$veggie = new Vegetable (true, "синий");

$leafy = new Spinach();

// вывод информации об объекте

echo "Объект veggie содержит следующие классы: CLASS ".get_class($veggie). "\n";

echo "Объект leafy распространяется на следующие классы: CLASS ".get_class($leafy);

echo "<br> главный класс " .get_parent_class($leafy) . "\n";

// показ свойств veggie

echo "\nveggie: Свойства\n";

print_vars ($veggie);

// и методов leafy

echo "\nleafy: Методы\n";

print_methods($leafy);

echo "\nПроисхождение\n";

class__parentage("leafy", "Spinach");

class_parentage("leafy", "Vegetable");

?>

</pre>

В результате выполнения программы на экран будет выведено:

Объект veggie содержит следующие классы: CLASS vegetable

Объект leafy распространяется на следующие классы: CLASS spinach, главный класс vegetable

veggie: Свойства

edible = 1

color = синий

leafy: Методы

function vegetable()

function is_edible()

function what_color()

function spinach()

function cook_it()

function is_cooked()

Происхождение:

Объект leafy не принадлежит подклассу Spinach

Объект leafy принадлежит классу spinach и является подклассом классу Vegetable

На этом изучение классов, объектов и функций работы с ними считаем завершенным. В случае какого-либо вопроса при работе этого примера просто попытайтесь изменить его и посмотреть, что случится с результатом работы. Или же обратитесь к соответствующему описанию той или иной функции в нашей книге.

<< Предыдущий параграф Следующий параграф >>
Оглавление