После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-08-08
Основы PHP → Функции для работы с классами и объектами
PHP, Специальные функции

В PHP существует множество стандартных функций для работы с классами и объектами. Здесь я расскажу об основных из них...

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

get_class_methods()

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

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

Вот пример использования ее для получения списка методов класса:

<?
...
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"

?>

Выведет:
setWingSpan
getWingSpan

get_class_vars()

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

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

Пример использования 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():

<?

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():

<?

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;

?>

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

get_class()

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

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

Пример использования 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 имя_обьекта);

Использование 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():

<?

class Vehicle {
  ...
}

class Land extends Vehicle {
  ...
}

$auto = new Land;

// Переменной $is_subclass присваивается TRUE
$is_subclass = is_subclass_of($auto, "Vehicle");

?>

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

get_declared_classes()

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

array get_declared_classes()

Получение списка классов функцией get_declared_classes():

<?

class Vehicle {
  ...
}

class Land extends Vehicle {
  ...
}

$declared_classes = get_declared_classes();

// Результат: $declared_classes = array("Vehicle", "Land")

?>
551
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока