Зачем в PHP нужна рефлексия?

Добрый день. Вопрос, собственно, отражен уже в названии топиа: Зачем в PHP нужна рефлексия. Я понимаю, например, в джаве зачем она нужна. Там есть рантайм во время которого нельзя что-либо перекомпилировать (изменять) и рефлексия это практически единственный способ вызвать метод, имя которого тебе не известно при компиляции. Ну а в пхп-то это зачем. Это же скриптовый язык и ты там вообще можешь имя любого метода вписать и в худшем случае он просто выдаст ошибку, но все равно попытается запустить скрипт. Если только она нужна для исследования класса, но для этого в пхп полно своих методов и без рефлексии. Вот один: php.net/manual/ru/function.get-class-methods.php . Поэтому я не понимаю зачем в скриптовом языке нужна рефлексия. Просветите? Заранее спасибо.
  • Вопрос задан
  • 16132 просмотра
Решения вопроса 1
@Nc_Soft
<?php

class Stp008 {
   /**
    * Вытащи этот текст проще, че это сделал я
    */
	public function get() {

	}
}

$reflection = new ReflectionClass('Stp008');
$method = $reflection->getMethod('get');
echo $method->getDocComment();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
fornit1917
@fornit1917
Например для аннотаций (получения данных из phpdoc) php.net/manual/ru/reflectionclass.getdoccomment.php
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Мок объекты классов при тестировании. В случае белого ящика без рефлексии тяжко.
Ответ написан
Комментировать
Tyranron
@Tyranron
Еще с помощью нее делают удобние IoC-контейнеры, например, в Laravel.
А еще она позволяет тестировать private методы классов напрямую.
В общем-то, дальше дело фантазии, рефлексия всего лишь позволяет программе отслеживать свою структуру и поведение во время выполнения.
Ответ написан
rdifb0
@rdifb0
Программист, реалист
Потому что больше возможностей и ООП
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
reflexion — отражение, симметрия. И как верно пометил Vit для этого и используется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы