uznay-chto-hochesh.narod.ru

-сайт для интересующихся людей

Учебник - справочник по PHP.

Здесь Вы найдете что хотели

Меню сайта
Главная
Введение
Справочник языка
Возможности РНР
Функции (справочник)
Расширение РНР 4.0
F.A.Q. частые вопросы
Приложения
Алфавитный указатель
Друзья сайта
сделай сайт сам! пособие по html
изучение html и web-дизайна для новичков
Бесплатная отправка смс на все операторы
Реклама
  Игры для Samsung C458 | Игры для Nokia 6103 | Доставка в любой и СНГ, покупка и продажа авто сауны брянск.
Назад Вперёд

IX. Функции класса/объекта

Введение

Эти функции позволяют получать информацию о классах и инстанциировать (создавать экземпляры) объекты. Вы можете получить имя класса, к которому принадлежит объект, а также свойства и методы члена класса. Используя эти функции, вы можете определить не только членство объекта в классе, но и наследование (т.е. - какой класс расширяется классом объекта).

Примеры

В первом примере мы сначала определяем базовый класс и расширение этого класса. Базовый класс описывает овощ/vegetable в целом: съедобен ли он и какого цвета. Подкласс Spinach добавляет метод для приготовления его и метод для определения, готов ли он.

Пример 1. classes.inc
<?php

// базовый класс со свойствами и методами членов
class Vegetable {

    var $edible;
    var $color;

    function Vegetable( $edible, $color="green" ) {
  $this->edible = $edible;
  $this->color = $color;
    }

    function is_edible() {
  return $this->edible;
    }

    function what_color() {
  return $this->color;
    }
    
} // конец определения класса Vegetable

// конец базового класса
class Spinach extends Vegetable {

    var $cooked = false;

    function Spinach() {
  $this->Vegetable( true, "green" );
    }

    function cook_it() {
  $this->cooked = true;
    }

    function is_cooked() {
  return $this->cooked;
    }
    
} // конец класса Spinach

?>

Затем мы инстанциируем 2 объекта этих классов и печатаем информацию о них, включая их иерархию классов. Мы также определяем некоторые вспомогательные функции, в основном для нормальной печати переменных.

Пример 2. test_script.htm
<pre>
<?php

include "classes.inc";

// вспомогательные функции

function print_vars($obj) {
    $arr = get_object_vars($obj);
    while (list($prop, $val) = each($arr))
  echo "\t$prop = $val\n";
}

function print_methods($obj) {
    $arr = get_class_methods(get_class($obj));
    foreach ($arr as $method)
  echo "\tfunction $method()\n";
}

function class_parentage($obj, $class) {
    global $$obj;
    if (is_subclass_of($$obj, $class)) {
  echo "Object $obj belongs to class ".get_class($$obj);
  echo " a subclass of $class\n";
    } else {
  echo "Object $obj does not belong to a subclass of $class\n";
    }
}

// инстанциируем (создаём) 2 объекта

$veggie = new Vegetable(true,"blue");
$leafy = new Spinach();

// печатаем информацию об объектах
echo "veggie: CLASS ".get_class($veggie)."\n";
echo "leafy: CLASS ".get_class($leafy);
echo ", PARENT ".get_parent_class($leafy)."\n";

// показываем свойства veggie
echo "\nveggie: Properties\n";
print_vars($veggie);

// и методы leafy
echo "\nleafy: Methods\n";
print_methods($leafy);

echo "\nParentage:\n";
class_parentage("leafy", "Spinach");
class_parentage("leafy", "Vegetable");
?>
</pre>

В этом примере важно отметить, что объект $leafy является экземпляром класса Spinach, который является подклассом от Vegetable, следовательно, последняя часть вышеприведённого скрипта выведет:

[...]
Parentage:
Object leafy does not belong to a subclass of Spinach
Object leafy belongs to class spinach a subclass of Vegetable
Содержание
call_user_method_array - вызывает пользовательский метод, заданный с массивом параметров [не рекомендуется применять]
call_user_method - вызывает пользовательский метод в специфическом объекте [не рекомендуется применять]
class_exists - проверяет, определён ли данный класс
get_class_methods — возвращает массив имён методов класса
get_class_vars — возвращает массив свойств по умолчанию данного класса
get_class — возвращает имя класса объекта
get_declared_classes — возвращает массив с именем определённого класса
get_object_vars — возвращает ассоциативный массив свойств объекта
get_parent_class - запрашивает имя родительского класса для объекта или класса
is_a — возвращает TRUE, если это объект данного класса или если он имеет этот класс как один из его родительских классов
is_subclass_of — возвращает TRUE, если данный объект имеет этот класс как один из его родительских классов
method_exists - проверяет, существует ли метод класса

НазадОглавление Вперёд
com_setВверх call_user_method_array

Хостинг от uCoz