<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

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

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

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

Подписавшись по 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):

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