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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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




ГЛАВА 6. Объектно-ориентированные возможности РНР

Функции для работы с классами и объектами

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

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")

?>

Назад | Содержание раздела | Общее Содержание | Вперед



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





Copyright © 2005-2016 Project.Net.Ru