Функции позволяющие получать информацию о классах и объектах в PHP

PHP имеет много полезных функций, которые предоставляют информацию о классах и объектах. Они полезны, когда необходимо работать с объектами из других приложений, также помогают писать гибкий, удобный код. С помощью этих функций можно узнать имя класса объекта, получить его поля, методы, убедиться, создан ли он от назначенного класса и т.д.

Перечислим наиболее часто употребляемые функции:

- get_class( $obj ) – применяется для возвращения имя класса, принадлежащему объекту $obj;

- get_parent_class($className или $obj ) — возвращает имя класса, являющимся родителем класса $className, или родителем класса, чьим объектом есть $obj;

- is_a( $obj, $className ) — возвращает true, если $obj — объект класса $className, или если $obj — объект класса — потомка $className;

- $obj instanceof $className – выполняет ту же функцию, чтои is_a();

- get_class_methods($className или $obj ) — возвращает массив, который содержит имена всех методов указанного класса $className или объекта $obj;

- get_class_vars( $className ) – может возвращать ассоциативный массив всех свойств указанного класса $className вместе с их значениями по умолчанию;

- get_object_vars( $obj ) – создан возвращать ассоциативный массив всех свойств объекта $obj, вместе с их текущими значениями.

Функции get_class_vars(),get_object_vars() и get_class_methods() могут возвращать лишь те поля и методы, находящиеся в одной части действия с кодом, который их вызывает.

Поэкспериментируем с некоторыми функциями:


loggedIn = true;
  }

  public function logout() {
    $this->loggedIn = false;
  }

  public function isLoggedIn() {
    return $this->loggedIn;
  }

  public function listMyProperties() {
    echo "My properties are: ";
    print_r( get_object_vars( $this ) );
  }
}

class Administrator extends Member {

  public $adminLevel = 1;

  public function createForum( $forumName ) {
    echo "$this->username created a new forum: $forumName";
  }

  public function banMember( $member ) {
    echo "$this->username banned the member: $member->username";
  }

}

$admin = new Administrator();
$admin->username = "Mary";
$admin->login();

echo "1. $admin->username's class is " . get_class( $admin ) . "";
echo "2. $admin->username's parent class is " . get_parent_class( $admin ) . "";
echo "3. Is $admin->username a Member? " . ( is_a( $admin, "Member" ) ? "Yes" : "No" ) .  "";
echo "4. $admin->username's methods are: ";
print_r( get_class_methods( $admin ) );
echo "5. $admin->username's class properties are: ";
print_r( get_class_vars( get_class( $admin ) ) );
echo "6. $admin->username's object properties are: ";
print_r( get_object_vars( $admin ) );
echo "7. ";
$admin->listMyProperties();

?>


Класс Member создается в скрипте с несколькими методами и полями. В нем же создается класс Administrator, в котором добавляется поле public $adminLevel, также пара методов banMember() и createForum(), располагающихся только в объектах класса Administrator.
После того как создан класс, создаем объект класса Administrator. Его нужно сохранить в переменной $admin. Называем его «Mary. С помощью вызова метода login() даем админу логин.
В конце скрипта применяем разные функции к классам и обьектам.
Смотрим результат:


Mary's class is Administrator
Mary's parent class is Member
Is Mary a Member? Yes
Mary's methods are: Array ( [0] => createForum [1] => banMember [2] => login [3] => logout [4] => isLoggedIn [5] => listMyProperties )
Mary's class properties are: Array ( [adminLevel] => 1 [username] => )
Mary's object properties are: Array ( [adminLevel] => 1 [username] => Mary )
My properties are: Array ( [adminLevel] => 1 [username] => Mary [loggedIn] => 1 )


Категория: PHP Теги: 

Популярные записи:

Отображение содержимого последнего сообщения Отображение содержимого последнего сообщения
Правильный адрес URL в закладках Правильный адрес URL в закладках
Loginza – модуль авторизации на PHP Loginza – модуль авторизации на PHP
Функции PHP взаимодействующие с Twitter Функции PHP взаимодействующие с Twitter

Оставить комментарий или два

Отправить коментарий

Test

Яндекс.Метрика