<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру 2.0

PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире - PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

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

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Reflection API. ReflectionClass.

Reflection API. ReflectionClass.

Всем привет. Сегодня я пишу первую статью из серии, посвященной Reflection API.

Для начала стоит объяснить, что такое Reflection API? В переводе с английского это обозначает "Отражение" и это не просто так. Отражения позволяют нам узнать всю информацию о каком-нибудь классе, функции, методе, исключениях и прочего. Это достаточно обширная тема, и сегодня мы начнем изучать отражение класса, а потом перейдем к другим.

Отражение класса(ReflectionClass) позволяет узнать все про любой класс. Давайте рассматривать на примере.

Создайте файл user.php и наполните его следующим кодом:

<?php
  namespace Users;

  class User {
   protected $loggedIn = false;
   protected $data = [];

   public function getData() {
    return $this->data;
   }

   public function setData($data) {
    $this->data = $data;
  }

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

Думаю, пояснять здесь нечего. Все просто элементарно. Теперь создадим файл index.php и подключим там наш файл user.php

<?php
  include 'user.php';
?>

Для того, чтобы узнать все о нашем классе, нам нужно создать объект класса ReflectionClass и передать ему в конструктор название нашего класса в виде строки.

<?php
  include 'user.php';

  $rc = new ReflectionClass('Users\User');
?>

Т.к. в классе используется пространство имен, не забывайте указывать его также и в конструкторе класса ReflectionClass.

Итак, у нас создан нужный нам объект. Давайте посмотрим все методы, которые он имеет.

<?php
  include 'user.php';

  $rc = new ReflectionClass('Users\User');
  echo '<pre>';
  print_r(get_class_methods($rc));
  echo '</pre>';
?>

Если вы посмотрите, что выведет данный код, то увидите множество самых разных методов, которые имеет класс ReflectionClass. Давайте используем некоторые из них.

<?php
  include 'user.php';

  $rc = new ReflectionClass('Users\User');
  echo $rc->getName();
  echo '<br>';
  echo $rc->getShortName();
?>

Метод getName() вернет полное имя, включая пространства имен, а метод getShortName() возвращает только имя переданного класса.

Еще один очень полезный метод данного класса - hasMethod()

<?php
  include 'user.php';

  $rc = new ReflectionClass('Users\User');
  if($rc->hasMethod('isLoggedIn')) {
   echo 'Метод существует';
  }
?>

Думаю, тут все понятно. Сейчас я приведу несколько часто используемых методов.

<?php
  include 'user.php';

  $rc = new ReflectionClass('Users\User');
  echo 'Начальная линия: '.$rc->getStartLine();
  echo 'Конечная линия: '.$rc->getEndLine();
  echo 'Пространство имен: '.$rc->getNamespaceName();
  echo 'Методы класса: '.$rc->getMethods();
  echo 'Свойства класса: '.$rc->getProperties();
?>

Это одни из самых частых методов. Но, конечно, бывают нужны и другие. К примеру, isInstance() проверяет, можно ли создать объект данного класса или нет, а метод isAbstract() проверяет, абстрактный это класс или нет и так далее. Их все вы можете посмотреть с помощью get_class_methods(), как я показал в начале статьи.

В заключении хочется показать очень полезный статический метод - export();

Т.к. метод статический, то создавать объект нам не нужно.

<?php   include 'user.php';   ReflectionClass::export('Users\User'); ?>

Этот метод позволяет узнать все о классе: константы, свойства, методы и так далее.

Итак, на этом у меня все. Сегодня мы разобрались с отражением класса(ReflectionClass). Спасибо за внимание и увидимся в следующих статьях!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.