Page 57 - 4636
P. 57
конструкторів, деструктор класу повинен мати ім'я __destruct (). Деструктори не можуть приймати
параметри.
Створення екземплярів класу
Після оголошення класу необхідно створити об'єкт - конкретний примірник, який є членом класу, з
яким буде виконуватися робота. Цей процес називають також створенням примірників (instantiating)
класу. Об'єкт створюється за допомогою ключового слова new. При цьому потрібно зазначити,
примірником якого класу буде об'єкт, і надати всі параметри, які необхідні конструктору. Наведений
нижче код оголошує клас classname з конструктором, а потім створює три об'єкта типу classname:
class classname {
function construct($param) {
echo "Конструктор викликаний з параметром ".$param."<br />";
}
}
$a = new classname("Перший");
$b = new classname("Другий");
$c = newclassname();
Оскільки конструктор викликається при кожному створення об'єкта, цей код генерує наступний
висновок: конструктор викликаний з параметром, перший конструктор викликаний з параметром,
другий конструктор викликаний з параметром.
Використання атрибутів класу
Всередині класу ви отримуєте доступ до спеціального вказівника з ім'ям $this. Якщо атрибут
вашого поточного класу має ім'я $attribute, він вказується при занесенні або виборі значення в
операції всередині класу таким чином:
$this->attribute
Наступний код служить прикладом установки атрибутів і звернення до них всередині класу:
class classname {
var $attribute;
function operation($param){
$this->attribute = $param echo $this->attribute;
}
}
Можливість доступу до атрибуту ззовні класу визначається модифікаторами доступу. Клас, код
якого наведено вище, ніяк не обмежує доступ до атрибуту, тому до нього можна звернутися так, як
показано нижче:
class classname {
var $attribute;
}
$a = new classname();
$a->attribute = "value";
echo $a->attribute;
Прямий доступ до атрибутів за межами класу зазвичай не особливо гарна ідея. Одна з переваг
об'єктно-орієнтованого підходу полягає в тому, що він використовує інкапсуляцію. Для цього
призначені функції __get і __set. Якщо замість прямого доступу до атрибутів класу створити
функції доступу (accessor function), весь доступ буде здійснюватися через один розділ
програмного коду. Початковий варіант функцій доступу може мати такий вигляд:
classclassname {
var $attribute;
function __get($name) {
return $this->$name;
}
Function __set($name, $value) {
$this->$name = $value;
54