Reflection api. Reflectionclass.

Reflection API. ReflectionClass.

Відео: Reflection API | Java Tutorial

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

Для початку варто пояснити, що таке Reflection API? У перекладі з англійської це означає "Відображення" і це не просто так. Відображення дозволяють нам дізнатися всю інформацію про якомусь класі, функції, методі, винятки та іншого. Це досить велика тема, і сьогодні ми почнемо вивчати відображення класу, а потім перейдемо до інших.

Відображення класу (ReflectionClass) дозволяє дізнатися все про будь-який клас. Давайте розглядати на прикладі.

створіть файл user.php і наповніть його наступним кодом:

lt ;?php
namespaceUsers-

classUser{
protected $ loggedIn =false-
protected $ data =[] -

publicfunction getData(){
return $ this-gt;data-
}

publicfunction setData($ data){
$ this
-gt;data = $ data-
}

publicfunction isLoggedIn(){
return $ this-gt;loggedIn-
}
}
?gt;

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

lt ;?php
include
`User.php`-
?gt;

Для того, щоб дізнатися все про наш клас, нам потрібно створити об`єкт класу ReflectionClass і передати йому в конструктор назва нашого класу у вигляді рядка.

lt ;?php
include
`User.php`-

$ rc
=newReflectionClass(`Users User`) -
?gt;



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

Відео: Reflection

Отже, у нас створено потрібний нам об`єкт. Давайте подивимося все методи, які він має.

lt ;?php
include
`User.php`-

$ rc
=newReflectionClass(`Users User`) -
echo
`
`
-
print_r
(get_class_methods($ rc)) -
echo
``-
?gt;



Якщо ви подивіться, що виведе даний код, то побачите безліч найрізноманітніших методів, які має клас ReflectionClass. Давайте використаємо деякі з них.

Відео: PHP Reflection API: Reflection Method (2/5)

lt ;?php
include
`User.php`-

$ rc
=newReflectionClass(`Users User`) -
echo $ rc
-gt;getName() -
echo
`
`
-
echo $ rc
-gt;getShortName() -
?gt;

метод getName () поверне повне ім`я, включаючи простору імен, а метод getShortName () повертає тільки ім`я переданого класу.

Ще один дуже корисний метод даного класу - hasMethod ()

lt ;?php
include
`User.php`-

$ rc
=newReflectionClass(`Users User`) -
if($ rc-gt;hasMethod(`IsLoggedIn`)){
echo
`Метод існує`-
}
?gt;

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

lt ;?php
include
`User.php`-

$ rc
=newReflectionClass(`Users User`) -
echo
`Початкова лінія:`.$ rc-gt;getStartLine() -
echo
`Кінцева лінія:`.$ rc-gt;getEndLine() -
echo
`Простір імен:`.$ rc-gt;getNamespaceName() -
echo
`Методи класу:`.$ rc-gt;getMethods() -
echo
`Властивості класу:`.$ rc-gt;getProperties() -
?gt;

Це одні з найчастіших методів. Але, звичайно, бувають потрібні і інші. Наприклад, isInstance () перевіряє, чи можна створити об`єкт даного класу чи ні, а метод isAbstract () перевіряє, абстрактний це клас чи ні і так далі. Їх все ви можете подивитися за допомогою get_class_methods (), як я показав на початку статті.

У висновку хочеться показати дуже корисний статичний метод - export ();

Оскільки метод статичний, то створювати об`єкт нам не потрібно.

lt ;?php include `User.php`- ReflectionClass::export(`Users User`) -?gt;

Цей метод дозволяє дізнатися все про клас: константи, властивості, методи і так далі.

Отже, на цьому у мене все. Сьогодні ми розібралися з відображенням класу (ReflectionClass). Дякую за увагу і побачимося в наступних статтях!

Поділися в соціальних мережах:

Схожі
Створення движка на mvc. Створюємо авторизацію.Створення движка на mvc. Створюємо авторизацію.
Створення движка на mvc. Робимо можливість редагування і видалення користувачів.Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
Nodejs. Як створити "список справ". Частина 1.Nodejs. Як створити "список справ". Частина 1.
Модифікатори доступу в phpМодифікатори доступу в php
Nodejs. Template engine. Частина 1.Nodejs. Template engine. Частина 1.
Атрибут data- * в html5.Атрибут data- * в html5.
Шаблон проектування "стратегія" (pattern strategy).Шаблон проектування "стратегія" (pattern strategy).
Reflection api. Reflectionproperty.Reflection api. Reflectionproperty.
Nodejs. Як обробляти post запити.Nodejs. Як обробляти post запити.
Рекурсія в phpРекурсія в php
» » Reflection api. Reflectionclass.