belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...
PHP+MySQL >>>
                          Учебник Задачник Справочник

6.4. Конструкторы и деструкторы

При создании класса в нем можно определять специальный метод, называемый конструктором. Классы, в которых определены методы-конструкторы, вызывают их при создании каждого нового объекта, что позволяет передавать вновь создаваемым объектам начальные данные, тем самым инициализируя некоторое состояние объекта еще до начала его использования. Объявляются конструкторы при помощи специальной функции __construct() (см. пример 6.8).

<?php
class fruit_color{
	public $color,	$fruit;				//Объявляем свойства
 	
	function __construct($c){ 			//Объявляем конструктор с одним аргументом
		$this->color=$c;					//Задаем цвет фруктов
	}
	
	function set_fruit($fruit){		//Объявляем обычный метод с одним аргументом
		$this->fruit=$fruit;				//Задаем вид фруктов
		echo $this->color.' '.$this->fruit.'<br>'; 		//Выводим цвет и вид 
	}
	
	function __destruct(){				//Вызываем деструктор для удаления
												//объекта при освобождении ссылок на него
   }
}

$apples=new fruit_color('Yellow');  //Создаем объект и сразу же инициализируем 
$apples->set_fruit('orange');     	//Вызываем метод объекта

class fruit_color_2 extends fruit_color{ 		 //Объявляем класс-потомок

	function __construct($c_1, $c_2){		 	 //Объявляем свой конструктор 
		$this->color=$c_1.' and '.$c_2;			 //Задаем два цвета фруктов
	}
}

$apples_2=new fruit_color_2('Red', 'yellow'); //Создаем объект класса-потомка
$apples_2->set_fruit('apples');  				 //Вызываем метод объекта
?>

Пример 6.8. Использование конструкторов и деструкторов

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

Если инициализированные объекты далее в программе не используются, имеет смысл удалять их для высвобождения памяти. Для этих целей в классах разрешается объявлять специальные методы, называемые деструкторами (см. пример 6.8). Они запускаются после освобождения всех ссылок на определенный объект или при завершении скрипта. Деструктор вызывается даже в том случае, когда работа скрипта останавливается при помощи функции exit() (данная функция выводит сообщение и прекращает выполнение скрипта). При чем, если функция exit() вызывается в самом деструкторе, она предотвращает запуск всех последующих функций завершения.

Следует помнить, что если класс-потомок определяет собственный конструктор/деструктор, то конструктор/деструктор родительского класса вызываться не будет. Поэтому для его вызова внутри конструктора/деструктора класса-потомка, следует использовать конструкцию parent::__construct()/ parent::__destruct(). Если же в классе-потомке собственный конструктор/деструктор не определяется, то родительский конструктор/деструктор, если конечно он не объявлен приватным, наследуется как обычный метод.

Контрольные вопросы и задания

  1. Опишите конструкторы и деструкторы классов.

Словарь новых английских слов

one-off [wʌnˈɒf] – одноразовый.
partial [ˈpɑːʃ(ə)l] – частичный.
class [klɑːs] – класс.
new [njuː] – новый.
empty [ˈempti] – пустой.
constant [ˈkɒnst(ə)nt] – константа.
person [ˈpəːs(ə)n] – личность, персона.
object [ˈɒbdʒɪkt] – объект.
method [ˈmɛθəd] – метод.
property [ˈprɒpəti] – свойство.
public [ˈpʌblɪk] – открытый, общественный.
protected [prəˈtektɪd] – защищенный.
private [ˈprʌɪvət] – закрытый, частный.
this [ðɪs] – это, этот.
static [ˈstatɪk] – статичный, неподвижный.
extend [ɪkˈstɛnd] – расширять.
self [self] – собственный.
parent [ˈpɛːr(ə)nt] – родитель, предок.
exit [ˈeksɪt] – выход, выйти.
nest [nest] – вставлять один предмет в другой.
final [ˈfʌɪn(ə)l] – заключительный, окончательный.
construct [kənˈstrʌkt] – создавать, конструировать.
destruct [dɪˈstrʌkt] – разрушать, уничтожать.
descendant [dɪˈsɛnd(ə)nt] – потомок.
abstract [ˈæbstrækt] – абстрактный, отвлеченный.
interface [ˈɪntəfeɪs] – интерфейс, область контакта.
implement [ˈɪmplɪment] – осуществлять, реализовывать.
trait [treɪt] – особенность, черта.
use [ˈjuːs] – употреблять, использовать.
instead [ɪnˈstɛd] – вместо, взамен.
as [æz] – как.
anonymous [əˈnɒnɪməs] – безымянный, анонимный.
clone [kləʊn] – клон, двойник.
set [set] – устанавливать.
unset [ʌnˈsɛt] – удалять.
get [ɡet] – получать.
call [kɔːl] – вызывать, звать.

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх