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). Дякую за увагу і побачимося в наступних статтях!
- Як зробити 3d модель об`єкта на jаvascript.
- Nodejs. Як обробляти post запити.
- Nodejs. Як створити "список справ". Частина 1.
- Створення движка на mvc. Створюємо можливість додавання користувача в базу даних через адмін панель
- Minitool power data recovery - відновить флешки швидко і просто
- Bootstrap 4. Введення.
- Data doctor recovery simcard - відновить ваші контакти
- Шаблон проектування адаптер. Pattern adapter.
- Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
- Створення движка на mvc. Починаємо робити чат.
- Модифікатори доступу в php
- Створення класу в php
- Reflection api. Reflectionparameter.
- Reflection api. Reflectionobject.
- Атрибут data- * в html5.
- Шаблон проектування "стратегія" (pattern strategy).
- Nodejs. Template engine. Частина 1.
- Reflection api. Reflectionmethod.
- Reflection api. Reflectionproperty.
- Створення движка на mvc. Начинам робити систему розподілу прав користувачів.
- Створення движка на mvc. Створюємо авторизацію.