Конспект по начертательной
геометрии
Начертательная геометрия
Практикум решения задач
Геометрические основы
Инженерная графика
ЕСКД
Каталог графических примеров
Архитектура ЭВМ
Информатика и
информационные технологии
Конспект лекций по ядерной физике
ТОЭ
Физические законы механики
Волны оптика
Электротехника
Общая электротехника
Решение задач по
электротехнике
Язык программирования
MATLAB
Расчет электрических цепей
Моделирование цепей
переменного тока
Дифференциальные уравнения
Вычислительныe системы
Вычислительные комплексы
Электротехнические материалы
Теория конструктивных
материалов
Учебник PHP
Турбо Паскаль
Встроенный ассемблер
Turbo Vision
Java
Примеры программирования
на Java
Примеры скриптов
История искусства 18-19 век
Функции для работы с классами и объектами

В РНР существует несколько стандартных функций для работы с классами и объектами; эти функции рассматриваются в следующих разделах. Все они часто используются на практике, особенно в процессе разработки интерфейса, администрирования кода и диагностики ошибок.

get_class_methods( )

Функция get_class_methods( ) возвращает массив имен методов класса с заданным именем. Синтаксис функции get_class_methods( ):

array get_class_methods (string имя_класса)

Простой пример использования get_class_methods( ) приведен в листинге 6.7.

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

<?

...

class Airplane extends Vehicle {

var $wingspan;

function setWingSpan($wingspan) {

$this->wingspan = $wingspan;

}

function getWingSpan() {

return $this->wingspan;

}

}

$cls_methods = get_class_methods(Airplane);

// Массив $cls_methods содержит имена всех методов,

// объявленных в классах "Airplane" и "Vehicle"

?>

Как видно из листинга 6.7, функция get_class_methods( ) позволяет легко получить информацию обо всех методах, поддерживаемых классом.

get_class_vars( )

Функция get_class_vars( ) возвращает массив имен атрибутов класса с заданным именем. Синтаксис функции get_class_vars( ):

array get_class_vars (string имя_класса)

Пример использования get_class_vars( ) приведен в листинге 6.8.

Листинг 6.8. Получение списка атрибутов класса функцией get_class_vars( )

<?

class Vehicle {

var $model;

var $current_speed; }

class Airplane extends Vehicle {

var Swingspan; } $a_class = "Airplane";

$attribs = get_class_vars($a_class);

// $attribs = array ( "wingspan", "model", "current_speed")

?>

Массив $attribs заполняется именами всех атрибутов класса Airplane.

get_object_vars( )

Функция get_object_vars( ) возвращает ассоциативный массив с информацией обо всех атрибутах объекта с заданным именем. Синтаксис функции get_object_vars( ):

array get_object_vars (object имя_обьекта)

Пример использования функции get_object_vars( ) приведен в листинге 6.9.

Листинг 6.9. Получение информации о переменных объекта

<?

class Vehicle {

var Swheels;

}

class Land extends Vehicle {

var Sengine;

}

class car extends Land {

var $doors:

function car($doors, $eng, $wheels) {

$this->doors = $doors;

$this->engine = $eng;

$this->wheels = $wheels;

}

function get_wheels() {

return $this->wheels;

}

}

$toyota = new car(2,400,4);

$vars = get_object_vars($toyota);

while (list($key, $value) = each($vars)) :

print "$key ==> $value <br>";

endwhile;

// Выходные данные:

// doors ==> 2

// engine ==> 400

// wheels ==> 2

?>

Функция get_object_vars( ) позволяет быстро получить всю информацию об атрибутах конкретного объекта и их значениях в виде ассоциативного массива.

method_exists( )

Функция method_exists( ) проверяет, поддерживается ли объектом метод с заданным именем. Если метод поддерживается, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис функции method_exists( ):

bool method_exi sts (object имя_обьекта. string имя_метода)

Пример использования метода method_exists( ) приведён в листинге 6.10.

Листинг 6.10. Проверка поддержки метода объектом при помощи функции method_exists()

<?

class Vehicle {

...

}

class Land extends Vehicle {

var $fourWheel;

function setFourWheel Drive() {

$this->fourWeel = 1;

}

}

// Создать объект с именем $саr

$car = new Land;

// Если метод "fourWheelDrive" поддерживается классом "Land"

// или "Vehicle", вызов method_exists возвращает TRUE;

// в противном случае возвращается FALSE.

// В данном примере method_exists() возвращает TRUE.

if (method_exists($car, "setfourWheelDrive")) :

print "This car is equipped with 4-wheel drive";

else :

print "This car is not equipped with 4-wheel drive";

endif;

?>

В листинге 6.10 функция method_exists ( ) проверяет, поддерживается ли объектом $car метод с именем setFourWheelDrive( ). Если метод поддерживается, функция возвращает логическую истину и фрагмент выводит соответствующее сообщение. В противном случае возвращается FALSE и выводится другое сообщение.

get_class( )

Функция get_class( ) возвращает имя класса, к которому относится объект с заданным именем. Синтаксис функции get_class( ):

string get_class(object имя_объекта);

Пример использования get_class( ) приведен в листинге 6.11.

Листинг 6.11. Получение имени класса функцией get_class( )

<?

class Vehicle {

...

class Land extends Vehicle {

...

}

// Создать объект с именем $саr $car = new Land;

// Переменной $class_a присваивается строка "Land"

$class_a = get_class($car);

?>

В результате переменной $class_a присваивается имя класса, на основе которого был создан объект $саr.

get_parent_class( )

Функция get_parent_class( ) возвращает имя родительского класса (если он есть) для объекта с заданным именем. Синтаксис функции get_parent_dass( ):

string get_parent_class (object имя_обьекта);

Листинг 6.12 демонстрирует использование get_parent_class( ).

Листинг 6.12. Получение имени родительского класса функцией get_parent_class( )

<?

class Vehicle {

...

}

class Land extends Vehicle {

...

}

// Создать объект с именем $саr $саr = new Land;

// Переменной $parent присваивается строка "Vehicle"

$parent = get_parent_dass($car);

?>

Как и следовало ожидать, при вызове get_parent_class( ) переменной $parent будет присвоена строка "Vehicle".

is_subclass_of( )

Функция is_subclass_of( ) проверяет, был ли объект создан на базе класса, имеющего родительский класс с заданным именем. Функция возвращает TRUE, если проверка дает положительный результат, и FALSE в противном случае. Синтаксис функции is_subclass_of( ):

bool is_subclass_of (object объект, string имя_класса)

Использование is_subclass_of( ) продемонстрировано в листинге 6.13.

Листинг 6.13. Использование функции is_subdass_of( )

<?

class Vehicle {

...

}

class Land extends Vehicle {

...

}

$auto = new Land;

// Переменной $is_subclass присваивается TRUE

$is_subclass = is_subclass_of($auto, "Vehicle");

?>

В листинге 6.13 переменной $is_subclass( ) присваивается признак того, принадлежит ли объект $auto к субклассу родительского класса Vehicle. В приведенном фрагменте $auto относится к классу Vehicle; следовательно, переменной $is_subclass( ) будет присвоено значение TRUE.

get_declared_classes( )

Функция get_declared_classes( ) возвращает массив с именами всех определенных классов (листинг 6.14). Синтаксис функции get_declared_classes( ):

array get_declared_classes( )

Листинг 6.14. Получение списка классов функцией get_declared_classes( )

<?

class Vehicle {

...

}

class Land extends Vehicle {

...

}

$declared_classes = get_declared_classes();

// $declared_classes = array("Vehicle", "Land")

?>

Итоги

В этой главе были представлены некоторые концепции объектно-ориентированного программирования, при этом особое внимание уделялось их реализации в языке РНР. В частности, были рассмотрены следующие темы:

общие принципы объектно-ориентированного программирования;
классы, объекты и методы;
простое и иерархическое наследование;
абстрактные классы;
перегрузка методов;
функции для работы с классами и объектами в РНР.
Технология объектно-ориентированного программирования не очень сложна, но полное усвоение всех концепций обычно требует некоторого времени. Однако я гарантирую, что затраченное время полностью окупится - ООП поднимет эффективность вашей работы на принципиально новый уровень.

Начертательная геометрия и инженерная графика, перспектива