Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_shilina.doc
Скачиваний:
6
Добавлен:
19.09.2019
Размер:
275.46 Кб
Скачать

Константы в классах

В PHP5 в качестве атрибутов классов можно объявлять константы. Они всегда доступны как public, и к ним невозможно применить модификаторы public, protected или private. Обращаться к константам можно только через имя класса. Обращения через $this или другой указатель на объект класса не поддерживаются. В качестве константы может быть объявлено только значение примитивного типа, т.е. строка или число. Константы, как и другие атрибуты классов, наследуются и могут быть переопределены в классах-потомках.

Код: <? class MyClass {     const Property = 5; } echo "Constant member: " . MyClass::Property; ?>

Вывод: Constant member: 5

Статические атрибуты и методы

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

Код: <? class MyClass {     static function Display()     {         echo "Static function of class<br>\n";     } } MyClass::Display(); ?>

Вывод: Static function of class

Код: <? class MyClass {     static public $Property = 5; } echo "Static member: " . MyClass::$Property; ?>

Вывод: Static member: 5

  1. Создание экземпляра класса в рнр5.

Напишем класс:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

<?php // описываем класс с именем Example // и двумя свойствами (обычными переменными) class Example {     public $var1;     public $var2; } // создаем экземпляр класса $ex1 = new Example(); // устанавливаем значения свойствам $ex1->var1 = 'hello there '; $ex1->var2 = 'how are you?'; // выводим свойства echo $ex1->var1; echo $ex1->var2; // создаем еще один экземпляр класса // просто чтобы показать что это возможно $ex2 = new Example(); // у $ex2 теперь тоже есть свойство var1 // к которому можно обратиться: $ex2->var1 = 'значение'; ?>

Что мы только что сделали?

Мы создали класс с именем Example и двумя свойствами (обычными переменными): $var1 и $var2

$ex = new Example(); -Эта строка, создает экземпляр класса. Переменная $ex, теперь является экземпляром класса Example и она содержит 2 свойства. Это очень простой класс, экземпляр которого, в данном случае, представляет из себя всего лишь коробочку для 2 переменных: $var1 и $var2

Далее мы воспользовались этими переменными. Мы записали в них значения и считали их.Когда мы создаем экземпляр класса, то получается, что он имеет все переменные, которые описаны в классе. Мы можем создать сразу несколько экземпляров класса:

1 2 3

$ex1 = new Example(); $ex2 = new Example(); $ex3 = new Example();

В результате, мы имеем 3 переменные ($ex1, $ex2, $ex3) с экземплярами нашего класса. И каждая имеет по 2 свойства, к которым мы можем обратиться, что нибудь туда записать или считать.

Конструктор - __construct и деструктор __destruct запускаются неявно при создании и уничтожении экземпляров классов.

Создается экземпляр класса так:

Ex1 = new Example(); //выполняется __construct()

уничтожить экземпляр класса можно обычным способом:

unset(Ex1); // выполняется __destruct()

Специальное ключевое слово instanceof в PHP 5 позволяет определять является ли объект экземпляром определенного класса, или же экземпляром класса производного от какого-либо класса.

<?php       class MyClass { }       $obj1 = new MyClass();       if ($obj1 instanceof MyClass) {           echo "\$obj1 - объект класса MyClass";        }         class MyClass1 extends MyClass { }        $obj2 = new MyClass1();       if ($obj2 instanceof MyClass) {           echo "\$obj2 - объект класса, производного от MyClass";        }         interface Int { }       class MyClass2 implements Int { }       $obj3 = new MyClass2();       if ($obj3 instanceof Int) {           echo "\$obj3 - объект класса, созданного на основе интерфейса Int";        }  ?>

Также с помощью instanceof можно определить является ли объект экземпляром класса, созданного на основе определенного интерфейса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]