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

15.9. Расширение классов в PHP

В PHP предусмотрена такая важная вещь, как расширение классов, т. е. у вас есть уже один класс, который отвечает за те или иные действия, и вам срочно необходимо внести в него добавления. Для этого можно использовать возможности классов;

Расширенный, или производный, класс имеет возможность доступа ко всем переменным и функциям основного класса плюс те данные, которые вы добавляете в новом классе. Синтаксис расширения основного класса заключается в присутствии ключевого слова extends. Обратите внимание, что множественное наследование (наследование от двух или более классов) не поддерживается. Приведем пример расширения классов:

class Add_Stock extends Stock {

    var $owner;

    function set_owner ($name) {

        $this->owner = $name;

    }

}

Класс Add_stock имеет свое собственное имя, со своими переменными и функциями, но при этом он также имеет доступ к переменным класса Stock, определенного

нами ранее (см. пример 16.2), т. е. может использовать значения как из своего класса, так и из ранее определенного.

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

class my_study extends Stock {

    function my_study() {

        $this->add_item("10", 1);

    }

}

Данная функция имеет аналогичное название, что и класс. Это определяет класс my_study, который является расширением класса stock. В массив класса stock добавляется элемент под номером 10, равный 1, с учетом описанной нами ранее функции. Какправило, прииспользованиитакихклассовнеобходимотакжепользоваться комментариями, так как это дает более полное понимание того, как работает этот класс.

Приведем еще способы представления классов-конструкторов:

class my_study extends Stock {

    function my_study <$item = "10", $num = 1) {

        $this->add_item($item, $num) ;

    }

}

$default = new my_study;

$different = new my_study ("20", 17);

Как видите, в данном классе происходит задание значения в самой функции, что, конечно, очень удобно. Обратите внимание на строки:

1. $default = new my_study;

2. $different = new my_study ("40", 77);

Первая строка создает новый объект под названием $def что ведет к обращению к классу с переменными, которые заданы в функции. Если же необходимость в использовании данных значений пропала и вам срочно необходимо внести свои, то можно это сделать следующей строкой, опять же при помощи объявления нового объекта — строки два. При этом переменным Sitem, $num будут присвоены значения 40 и 77 соответственно.


ВНИМАНИЕ

Для производных классов конструктор исходного класса автоматически не вызывается, если был вызван конструктор производного класса.


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