Page 72 - 4636
P. 72
Перетворення класів рядка
Якщо реалізувати в класі функцію __toString(), вона буде викликатися при спробі виведення
класу на друк, як показано нижче:
$р = new Printable; echo $р;
Все, що повертає функція toString(), буде виводитися на екран оператором echo. Цю функцію
можна реалізувати, наприклад, таким чином:
class Printable { var $testone; var $t?sttwo; public function
toString() { return(var_export($this, TRUE)); }} (Функція var_export()
виводить значення всіх атрибутів класу.)
Використання Reflection API
До об'єктно-орієнтованих можливостей РНР відноситься і API-інтерфейс рефлексії Reflection API.
Рефлексія - це здатність опитувати існуючі класи і об'єкти на предмет інформації про їх структуру і
вміст. Дана можливість виключно корисна при взаємодії з невідомими або недокументованими
класами, які представлені в закодованих РНР-сценаріїв. Цей API-інтерфейс надзвичайно складний, але
ми все ж. розглянемо простий приклад, який дозволить схопити основну ідею. У прикладі
використовується раніше визначений у цій лекції клас Раді. Отримати всю інформацію про клас Раді
за допомогою Reflection API можна так, як показано в лістингу 2.8.
Рисунок 2.6 - Результат, забезпечуваний Reflection API
Лістинг 2.8. reflection.php - відображає інформацію про клас Page
<?php
require_once("page.inc”) ;
Sclass = new ReflectionClass("Page") ;
echo ”<pre>".$class."</pre>";
?>
Тут для виведення на друк інформації використовується метод __toString() класу
Reflection. Зверніть увагу на дескриптори <рге>, які не мають відношення до інформації, яка
видається методом __toString ().
69