Написание кода операции PHP и его выполнение. Как сделать?

Как я могу написать код операции PHP, сохранить его в файле и заставить Zend Engine выполнить его? Приветствуется любой метод или хак, если он помогает.


person Raffael    schedule 30.11.2011    source источник
comment
‹улыбайтесь›, когда нет благонамеренных ответов, которые точно не касаются [этого] вопроса. Приемлемы ли несчастные или гневные ответы, которые не касаются вопроса?   -  person halfer    schedule 30.11.2011
comment
@halfer ... посмотрите на ответ Mo.sch ... PHP-вопросы всегда привлекают такие ответы ... а вы -1 меня? о чувак ...   -  person Raffael    schedule 30.11.2011
comment
Нет, нет -1 от меня; Я всегда стараюсь указать, почему я минусую :)   -  person halfer    schedule 30.11.2011
comment
Зачем минусовать? Это совершенно правильный (и интересный) вопрос.   -  person N.B.    schedule 30.11.2011
comment
@Н.Б. - да, это хороший вопрос. Возможно, отрицательные отзывы были связаны с тем, как изначально был задан вопрос, но теперь он был значительно улучшен.   -  person halfer    schedule 30.11.2011


Ответы (2)


Есть несколько методов пользовательского пространства (из плагинов), которые могут работать с кодами операций.

Однако ни один из них не создает обычный текст, потому что коды операций не предназначены для записи пользователем (в отличие от Parrot).

person Alister Bulman    schedule 30.11.2011
comment
это означает, что я мог бы перезаписать кешированный файл с помощью apc_bin_load, я думаю ... поэтому следующий вопрос будет заключаться в том, как красиво выглядящие операторы кода операции соотносятся с фактически используемым двоичным представлением. ты что-то знаешь об этом? ссылки или что? - person Raffael; 30.11.2011
comment
stackoverflow.com/questions/1795425/how- В to-get-opcodes-of-php есть некоторая информация, в основном относящаяся к Vulcan Logic Dumper — pecl.php.net/package/vld - person Alister Bulman; 30.11.2011

Существует расширение под названием ulopcodes, которое позволяет создавать собственные коды операций с помощью функции, предоставляемой коду PHP. .

Например:

ulopcodes_emit(ZEND_ECHO, "Hello world!");

Создаст эту строку в текущем oparray, которая будет выполняться виртуальной машиной.

Это расширение носит исключительно образовательный характер и не предназначено для использования в рабочем коде.

(Отказ от ответственности: я создатель ulopcodes)

person pmmaga    schedule 23.10.2016
comment
Да, вы можете использовать vld, например, для вывода сгенерированных кодов операций. - person pmmaga; 16.01.2017