Конструктор и деструктор

Опубликовал: Среда, Апрель 25, 2012 в категории HTML | Пока нет комментариев

Чтобы при создании класса присвоить начальные значения каким-либо пере-

менным, необходимо создать метод, имеющий предопределенное название

construct(). Такой метод называется конструктором. Конструктор всегда автоматически вызывается сразу после создания объекта.

class <Имя класса> {

<Область видимости> <Имя переменной co знаком $>;

[<Область видимости>] function <Имя функции> ([Параметры]) {

$this-><Имя переменной без знака $> = <Значение>;

$this-><Имя функции>();

}

public function construct(<Параметр1>) {

$this-><Имя переменной без знака $> = <Параметр1>;

}

}

При создании экземпляра класса параметр <Параметр1> можно указать после имени класса в круглых скобках:

<Экземпляр класса> = new <Имя класса>(<Параметр1>);

Кроме того, конструктор может иметь то же название, что и имя класса. Та- кой метод создания конструктора применялся в PHP 4. В настоящий момент может использоваться для совместимости.

Если конструктор вызывается при создании объекта, то перед уничтожени- ем объекта автоматически вызывается метод, называемый деструктором. В языке PHP деструктор реализуется в виде предопределенного метода

destruct().

Например:

<?php

class Class1 {

public $var;

public function construct($var) {

$this->var = $var;

echo ’Вызван конструктор<br>’;

}

public function destruct() {

echo ‘Вызван деструктор’;

}

public function f_get() {

return $this->var;

}

}

$obj = new Class1(5);

echo ‘Значение свойства var равно ‘ . $obj->f_get() . ‘<br>’;

echo ‘Вывод перед удалением объекта<br>’;

unset($obj);

?>

Этот простейший пример выведет:

Вызван конструктор

Значение свойства var равно 5

Вывод перед удалением объекта

Вызван деструктор

5.31.3. Наследование

Предположим, у нас есть класс (например, Сlass1). С помощью наследования мы можем создать новый класс (например, Сlass2), в котором будет доступ ко всем свойствам и методам класса Сlass1, а также к некоторым новым свойствам и методам.

class Class1 {

public function f_print() {

echo ‘Метод f_print класса Class1<br>’;

}

public function f_display() {

echo ‘Метод f_display класса Class1<br>’;

}

}

class Class2 extends Class1 {

public function f_new() {

echo ‘Метод f_new класса Class2<br>’;

}

}

Ключевое слово extends указывает, что класс Class2 наследует все свойства и методы класса Class1.

$obj = new Class2();

$obj->f_new();

$obj->f_print();

$obj->f_display();

Выведенный этим примером код HTML будет отображен Web-браузером так:

Функция f_new класса Class2

Функция f_print класса Class1

Функция f_display класса Class1

Если имя функции в классе Class2 совпадает с именем функции класса

Class1, то будет использоваться функция из класса Class2:

class Class2 extends Class1 {

public function f_new() {

echo ‘Метод f_new класса Class2<br>’;

}

public function f_display() {

echo ‘Привет’;

}

}

$obj = new Class2();

$obj->f_display();

Этот пример выведет Привет, а не Метод f_display класса Class1.

Чтобы использовать метод, объявленный в родительском классе, следует вы-

звать его с помощью ключевого слова parent. Пример:

class Class1 {

public function f_display() {

echo ‘Метод f_display класса Class1<br>’;

}

}

class Class2 extends Class1 {

public function f_display() {

parent::f_display();

echo ‘Привет’;

}

}

$obj = new Class2();

$obj->f_display();

Выведет:

Метод f_display класса Class1

Привет

О БРАТИТЕ ВНИМ АНИЕ

в родительском классе автоматически не вызы- ваются. Для их вызова также необходимо использовать ключевое слово parent.

В некоторых случаях необходимо запретить переопределение метода. Для этого перед определением метода следует указать ключевое слово final:

class Class1 {

final public function f_display() {

echo ‘Метод f_display класса Class1<br>’;

}

}

class Class2 extends Class1 {

public function f_display($msg) {

echo $msg;

}

}

$obj = new Class2();

Так как перед методом f_display() в классе Class1 стоит ключевое слово

final, интерпретатор выведет сообщение об ошибке:

Fatal error: Cannot override final method Class1::f_display()

Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)

Add to Social Bookmarks
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • BobrDobr
  • Mr. Wong
  • Yandex.Bookmarks
  • Text 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Pisali
  • SMI 2
  • Moe Mesto
  • 100 Zakladok
  • Vaau!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - I.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>