Эта статья иллюстрирует основные концепции и использование отражения в расширенном обучении PHP. Поделитесь для вашей справки следующим образом:
I. Предисловие
Отражение-это одна из характеристик языка программирования Java, которая позволяет запускать программы Java для проверки самих себя, или “самопроверки”, и непосредственно манипулировать внутренними атрибутами программы. Эта функция может не очень часто использоваться в практических приложениях.
PHP отлично поддерживает API отражения с 5.0 . Отражение PHP можно использовать для наблюдения и изменения поведения программы во время выполнения. Программный компонент, ориентированный на отражение, может отслеживать выполнение кода в пределах диапазона и изменять себя в соответствии с желаемой целью и диапазоном, связанным с ней. 。 PHP5 имеет полный API отражения, добавляющий возможность обратного проектирования классов, интерфейсов, функций, методов и расширений.
II. Концепция
Отражение относится к расширению анализа PHP – программ в запущенном состоянии PHP. Экспорт или представление подробной информации о классах, методах, атрибутах, параметрах и т.д., включая аннотации . Эта функция динамического получения информации и динамического вызова методов объектов называется API отражения.
Базовая грамматика отражения PHP
Существует множество способов достижения отражения, вы можете создать экземпляр специализированного класса управления Класс отражения Класс для достижения отражения, или, в случае существующих экземпляров класса, путем прямого создания экземпляра Метод отражения Класс для выполнения метода отражения, принцип заключается в следующем:
Ниже приведены основные способы использования класса отражения и класса метода отражения:
1. Отражающий класс
(1) Класс отражения (< имя класса >);
Введите строку имени класса и верните экземпляр класса ReflectionClass, который управляет целевым классом.
((2) Отразить класс - > получить константу (< Имя константы >);
Имя константы, определенное во входящем классе, возвращает значение константы с помощью $reflectionclass->getConstants Возвращает массив всех определенных констант в классе;
((3) $class = $отразить класс->Новая установка();
Создайте экземпляр класса, чтобы вернуть экземпляр целевого класса; или Класс отражения - > NewInstanceArgs (< Массив параметров >) Создаются параметры конструктора входного экземпляра.
2. Метод Отражения
(1) Метод отражения (<Имя метода>);
Передайте строку имени метода и верните экземпляр класса ReflectionMethod целевого метода элемента управления.
((2) $параметры = $Метод отражения->getParameters();
Возвращает необходимые имена параметров для этого класса, который возвращает двумерный массив, содержащий все имена параметров.
(3) $name = $параметры->getName();
Возвращает одно имя параметра массива параметров, необходимых для выполнения метода, которые могут быть получены и назначены по одному в цикле foreach.
((4) Метод отражения - > invokeArgs (< экземпляр класса >, < массив параметров, необходимых для выполнения этого метода >);
Передаются параметры экземпляра класса и метода, выполняется метод выполнения и возвращается результат выполнения.
3. Отражающие классы и другие часто используемые методы отражения:
Класс отражения:
Метод отражения:
4. В дополнение к классу отражения и методу отражения, Параметры, атрибуты и переменные среды, расширения PHP-сервисов в наших классах также могут быть реализованы путем отражения некоторых методов API. Следующим образом:
IV. Использование рефлексии в практических приложениях
1. Отражение можно использовать для создания документов и файлов. Он может сканировать классы в файле и создавать документы с описанием один за другим. 2. Поскольку отражение может обнаружить внутреннюю структуру класса, то Его можно использовать в качестве крючка для реализации подключаемых функций ; 3. Он может использоваться в качестве динамического прокси-сервера для динамического создания и создания экземпляров некоторых классов и методов выполнения в случае неизвестных или неопределенных имен классов. 4. Для классов, унаследованных много раз, мы можем изучить структуру базового класса с помощью многократного отражения, или мы можем создать экземпляры всех унаследованных классов с помощью рекурсивного отражения, что является принципом внедрения зависимостей PHP.
5. Преимущества и недостатки отражения PHP
Преимущество
1. Языки с поддержкой отражения предоставляют функции среды выполнения, которые трудно реализовать на языках низкого уровня. 2、 Жесткого кодирования в некоторой степени можно избежать, обеспечивая гибкость и универсальность. 。 3. Его можно использовать в качестве объекта первого класса для обнаружения и изменения структуры исходного кода (например, блоков кода, классов, методов, протоколов и т.д.). 4. Строка символьной грамматики (функция Eval (), подобная JavaScript), может быть вычислена во время выполнения, как оператор исходного кода, а затем строка, соответствующая классу или функции, может быть преобразована в вызов или ссылку на класс или функцию. 5. Можно создать интерпретатор байт-кода нового языка, чтобы придать структуре программирования новый смысл или цель.
Низкое качество
1. Стоимость обучения этой технологии высока. Программирование, ориентированное на отражение, требует более глубоких знаний, включая фреймворки, реляционные сопоставления и взаимодействия объектов, чтобы использовать преимущества более общего выполнения кода. 2、 Аналогично, поскольку концепции и грамматики отражения являются абстрактными, слишком большое злоупотребление технологией отражения затруднит другим понимание кода, что не способствует сотрудничеству и общению. 3. Поскольку некоторые работы по проверке информации были перенесены со времени компиляции на время выполнения. Это повышает гибкость кода, при этом немного снижая операционную эффективность. 。 4. Изучив характеристики и навыки рефлекса , его недостатков можно по возможности избежать, но для этого требуется много времени и опыта.
Больше читателей, интересующихся контентом, связанным с PHP, могут ознакомиться с темами этого сайта: Введение в объектно-ориентированное программирование Php, Введение в навыки работы с массивами PHP, Введение в базовую грамматику PHP, Краткое описание работы PHP и использования операторов, Краткое описание использования строк Php и данных php +mysql. Введение в библиотечные операции и Краткое описание общих навыков работы с базами данных на PHP
Я надеюсь, что эта статья будет полезна для разработки PHP – программ для всех.