П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4097 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6758 раз(а).

Учебник HTML.
Просмотров 3719 раз(а).

Руководство по PHP5.
Просмотров 5992 раз(а).

Хостинг через призму DNS.
Просмотров 4814 раз(а).

Подборка текстов стандартных документов.
Просмотров 56246 раз(а).

Учебник PHP - Самоучитель
Просмотров 3706 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8346 раз(а).

Внешние атаки...
Просмотров 4566 раз(а).

Учебник PHP.
Просмотров 3175 раз(а).

SSI в примерах.
Просмотров 176 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Учебник РНР
Назад Вперёд

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.php
<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


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru