Привет хабросообщество. Надеюсь на вашу помощь в решении проблемы:
Нормальный код примерно выглядит так:
$hentry = $document->find('a.pages');
foreach ($hentry as $element) {
$_urls[]=pq($element)->attr('href')->html();
}
В виду «архитектурных» решений понадобилось реализовать следующий «финт ушами» на PHP:
У нас есть переменная!!! в виде:
$var="pq($element)->attr('href')->html()";
то есть в ней хранится цепочка вызовов методов класса.
Собственно вопрос прост: как «вызвать» всю эту цепочку?
Вроде ответ прост — можно использовать
eval
:
$var=eval("pq($element)->attr('href')->html();");
но он сыпется с ошибкой:
Object of class DOMElement could not be converted to string
, хотя тот же код вызванный напрямую работает прекрасно:
$var=pq($element)->attr('href')->html();
Как я понимаю
call_user_func_array()
впринципе не поддерживает цепочки вызовов с аргументами. Есть еще ReflectionFunction но пока не понял с какой стороны подходить к нему