Информационные технологииStfw.Ru 🔍

Объекты и классы

Функции работы с данными
🕛 01.11.2006, 13:11
Описываемые в разделе функции позволяют получать информацию о классах и экземплярах объектов. Можно узнать, к какому классу принадлежит объект, его свойства и методы, а также их наследственную принадлежность.

В этом примере сначала определяется базовый класс, а затем его наследник.

<?php // Пример 1 Файл с определениями классов: classes. inc class ИсточникС
вета { // базовый класс var $>правляемость;
//неизменное логическое значение var $Яркость;
// конструктор function ИсточникСвета ( $управляемость. $яркость="неяркий"
) {
$this->Управляемость = $управляемость;
$this->flpKOCTb = $яркость: }
function 15_управляемо() {
return $1гп5->Улравляемость. }
function whatjipKOCTbО {
return $this->Яркость; }
} // конец определения класса
ИсточникСвета
// Расширение базового класса
class Лампочка extends Источник
Света {
var $Включена = FALSE.
// конструктор function Ла»мпочка() (
$this->ИсточникСвета( TRUE,
"яркий" ):
// Лампочка - это ИсточникСвета (управляемый, "яркий") }
function включить() {
$this->Включена = TRUE. }
function 15_вклочена () {
return $this->Включена; }
} // конец определения класса
Лампочка ?>

Следующий сценарий создает экземпляры объектов на основе определенных классов, а затем выводит основную информацию, которую можно узнать о классах и объектах средствами РНР 4. <php // Пример 2 Файл test_scnpt.uhp include "classes.тс": // определения функций
function print_vars($obj) (
$arr = get_object_vars($obj);
while (list($prop. $val) = each($arr))
echo "\t - свойство '$ргор' = \"$val\"\n": i
function pnnt_methods($cbj)
{ $arr - get_class_methods(qet_class($obj)):
foreach (Jarr as Smethod)
echo "\t - метод: $rnethodition"; }
function class_parentagp($obj. Sclass)
{ global $$obj: if (is_subclass_of($$obj Sclass)), { erho "\пОбьркт $obj принадлежит к классу:
" get_class($$obj); echo " поцкпасса $class\n"; } else { echo "Объект $obj не принадлежит
к подклассу $class\n"; } i / конец определения функций
еспо "Доступные сценарий '$PHP_SELF' классы\n": iclss
- get_Jeclared_classesf > forear.h ($c.isb as $cis name)
echo "\t- *cls_namei)\n":
// инициализируем 2 объекта
$солние = new ИсточникСвета
СTRUE."очень яркий"); $эл_лампочка * new Лампочка ()
// выясняем информацию об объектах
echo "\пКЛАСС объекта 'солнце'. '
" get_class($coлнце) '"\n". еспо "КЛАСС обьекта 'эл_лампочка' '
.get сlаss(эл_ ланлочка); echo
"'. Родительский Класс '"
get parent сlass(эл_лампочка).°)\гГ;
// проследить свойства объекта
'солнце' echo
"\n Свойства объекта 'солнце' \п"; print \'аг5($солнце).
// и свойства объекта 'эл_лампочка
echo "\n Методы объекта
'эл_лампочка': \n":
pnnt_methocls(эл_лампочка):
echo "\n Наследственность:\n": сlass
_раrentаgе
("эл_лампочка", "Лампочка"): сlаss
_раrentаgе
("эл_лампочка". "ИсточникСвета"):

При запуске сценария в системе РНР 4.0.4 для Windows он выводит:
Доступные сценарию классы
class. stdClass()
class: OverloadedTestClass()
class: Directory()class COMO
class: ИсточникСвета()
class: Лампочка()КЛАСС объекта 'солнце':
'ИсточникСвета'
КЛАСС объекта 'эл_лампочка':
'Лампочка'. Родительский Класс (ИсточникСвета)
Свойства обьекта 'солнце':
- свойство 'Управляемость' = "1" - свойство 'Яркость' = "очень яркий"
Методы объекта 'эл_лампочка':
- метод ИсточникСвета()
- метод. 13_управляемо()
- метод: what_яpKocTb()
- метод: Лампочка()
- метод: включить() метод- 15_включена()
Наследственность:
Объект эл_лампочка не
принадлежит к
подклассу: Лампочка Объект
'эл_лампочка' принадлежит к классу: 'Лампочка',
подкласса:
'ИсточникСвета'

get_ declared_classes

Получение списка доступных классов

array get_declared_classes (void)

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

В РНР 4 в начале возвращаемого массива указываются имена трех дополнительных классов: stdClass (определен в Zend/zend.c), Over-loadedTestClass (определен в ext/standard/basic_functions.c) и Directory (определен в ext/standard/dir.c); для системы Windows доступен также класс Com.

class_ exists

Проверка существования класса

booll_ class_exists (string class_name)

Возвращает TRUE, если для класса classjiame имеется определение; иначе - FALSE.

get_class_methods

Получение списка методов класса

array get_class_methods (string class_name)

Возвращает в массиве перечисление методов класса с именем class_ name.

См. также: get_class_vars(), get_object_vars().

get_class_vars

Получение списка свойств класса

array get_class_vars (string class_name)

Возвращает в массиве перечисление свойств класса с именем class_ name.

См. также: get_classjnethods(), get_object_vars().

get _class

Получение класса объекта

string get_class (object obj)

Возвращает имя класса, к которому принадлежит объект obj.

См. также: get_parent_class(), is_subclass_of().

get_parent_class

Получение имени родительского класса объекта

string get_parent_c!ass (object obj)

Возвращает имя родительского класса для класса, которому принадлежит объект obj.

См. также: get_class(), is_subclass_of().

is_subclass_of

Проверка наследования класса

boot is_subclass_of (object obj, string superclass)

Возвращает TRUE, если объект obj принадлежит к классу, наследному от класса superclass, иначе возвращает FALSE.

См. также: get_class(), get_parent_class().

get_object_vars

Получение списка свойств объекта

array get_object_vars (object obj)

Возвращает в ассоциативном массиве инициализированные для объекта obj свойства. Если переменным класса, к которому принадлежит объект obj, не были присвоены значения, то такие переменные в возвращаемый массив не включаются.
<?php
class Point2D { // точка на плоскости
var $x. $у: var Slabel.
//конструктор
function Point2D($x. $y) {
$this->x = $х; $this->y = $у. }
function setl_abel($label) {
$this->label = Slabel. }
function getPointO {
return arrayC'x" => $this->x.
"y" => $this->y. "label" => $this->label); } }
$pl = new Point2D(1.233. 3.445);
pnnt_r(get_object_vars($pl));
// "Slabel" объявлена, но не инициализирована // Array // (
// [х] => 1.233 // [у] => 3 445
// ) $pl->setl_abel("point #1");
рп nt_r(get_object_vars( $pl)):
// Array // (
// [х] => 1.233 // [у] => 3.445
// [label] => point #1 // ) ?>

См. также: get_classjnethods(), get_class_vars().

method_exists

Проверка наличия у объекта указанного метода

bool method_exists (object object, string method_name)

Возвращает TRUE, если объект obj имеет метод с именем methodjiame, в противном случае возвращает FALSE.

call_ user_ method

Косвенный вызов метода объекта

mixed calljjserjnethod (string method_name, object obj [, mixed parameter [, mixed ...]])

Вызывает метод method_name объекта obj. Возможные параметры методу можно передать в последующих аргументах parameter.
<?php
class Country { // объявление класса
var $NAME; var $TLD.
function Country($name. $tld) {
$this->NAME = $name;
$this->TLD = Hid; }
function pnnt_info($prestr="") {
echo Sprestr "Country: ",$this->NAHE.
"\n": echo Sprestr."Top Level Domain: ".$this->TLD."\n": } }
// создаем экземпляр класса Sentry = new CountryC'PoccMfl". "ru");
echo "* Прямой вызов метода класса \n", Scntry->print_info(), echo "\n* Косвенный вызов того же метода класса \n": calljjserjnethod ("pnntjnfo". Sentry. "\t"): ?>

См. также call_user_func().

Учебник по основам PHP   Теги:

Читать IT-новости в Telegram

Читайте также:

Классы

Информационные технологии
Мы в соцсетях ✉