Как я могу написать код операции PHP, сохранить его в файле и заставить Zend Engine выполнить его? Приветствуется любой метод или хак, если он помогает.
Написание кода операции PHP и его выполнение. Как сделать?
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)
Есть несколько методов пользовательского пространства (из плагинов), которые могут работать с кодами операций.
- http://uk.php.net/apc_bin_load (и http://uk.php.net/apc_bin_dump)
- http://uk.php.net/bcompiler_read / http://uk.php.net/bcompiler_write_file
Однако ни один из них не создает обычный текст, потому что коды операций не предназначены для записи пользователем (в отличие от Parrot).
person
Alister Bulman
schedule
30.11.2011
это означает, что я мог бы перезаписать кешированный файл с помощью apc_bin_load, я думаю ... поэтому следующий вопрос будет заключаться в том, как красиво выглядящие операторы кода операции соотносятся с фактически используемым двоичным представлением. ты что-то знаешь об этом? ссылки или что?
- person Raffael; 30.11.2011
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
Да, вы можете использовать vld, например, для вывода сгенерированных кодов операций.
- person pmmaga; 16.01.2017