Классы
Синтаксис языка и операторы
🕛 01.11.2006, 12:59
Класс - это коллекция переменных и функций для работы с ними. Переменные класса объявляются словом van. В функциях класса переменная $this означает: «данный объект этого класса» (экземпляр). Необходимо использовать запись this->что-либо для доступа к любой переменной или функции, имеющейся в этом объекте. <?рhр
class Корзина {
var $items: // Переменная
(ассоциативный массив).
// используемая для хранения данных о том
// что имеется в корзине и в каком количестве
// Добавить в корзину предмет $а в количестве $num штук function add_item
($a. $num) {
$this->items[$a] += $num: }
// Удалить из корзины предмет $а в количестве $num штук function remove_item ($a. $num) { if ($this->items[$a] > $num) { $this->items[$a] -= $num; return TRUE: } else { // нельзя удалить больше предметов, чем имеется return FALSE: } } }?>
Этот класс состоит из одного ассоциативного массива и двух функций для работы с ним.
В PHP 4 только константа может инициализировать значение переменной в объявлении класса, для присваивания неконстантных значений используйте конструктор класса.
Конструктор класса - эта функция класса, имеющая его имя и запускаемая автоматически при создании экземпляра класса.
Объявление класса - всего лишь его описание. Для того чтобы создать экземпляр класса - объект, необходимо создать переменную и назначить ей класс оператором new.
Scart = new Корзина. $cart->addjitpm("10". 1);
Класс может быть расширением другого класса. При наследовании все переменные и функции родительского класса наследуются дочерним классом. Наследование объявляется словом extends после имени класса. РНР не поддерживает множественное наследование (то есть одновременное наследование от нескольких классов).
class Моя_Корзина extends
Корзина {
var Sowner; // владелец
// конструктор класса
function Моя_Корзина (Sname = "Игорь") { $this->owner = $name:
} }
Класс Моя_Корзина расширяет класс Корзина добавлением одной переменной и конструктора.
$ncart = new Моя_Корзина;
print $ncart->owner; // Кто владелец корзины?
$nc = new Моя_Корзина("Вова"),
// Бовина корзина print $nc->owner; $ncart->add_item ("10" 1):
// (Унаследованная функциональность от класса Корзина)
Будьте осторожны: для дочерних классов конструктор родительско-ю класса не вызывается при создании экземпляра дочернего класса. Если необходимо вызвать конструктор родительского класса, это должно быть сделано явно (подобно вызову обычной функции родительского класса).