Как я могу передавать данные между несколькими вызовами PHP eval ()? - PullRequest
1 голос
/ 16 июля 2011

Я пишу плагин Wordpress, который должен адаптировать часть своего вывода, чтобы быть совместимым с плагином кэширования страниц (W3 Total Cache).Техника, используемая плагином кэширования для кэширования большей части страницы и выполнения только фрагментов, заключается в eval() таких фрагментах кода.

Однако, поскольку мой плагин может вызываться в нескольких местах в шаблоне Wordpress, мне нужночтобы сохранить состояние между этими различными экземплярами моего кода, выполняемого eval().По сути, мне нужен первый фрагмент кода для сохранения данных, которые затем будут использовать другие фрагменты кода.

По сути, мне нужен код в eval() для доступа к данным за пределами eval().

Есть ли способы сделать это?

РЕДАКТИРОВАТЬ: Я, вероятно, должен добавить, что каждое выполнение eval() также обернуто в функцию, которая вызывается как обратный вызов из preg_replace_callback(), поэтому любые переменные установленыв eval() нужно было бы продолжать через это также

1 Ответ

1 голос
/ 16 июля 2011

eval () не создает новую переменную область:

<?php

$foo = 'Hello, World!';
eval('var_dump($foo); $bar = 33;');
var_dump($bar);

... печатает это:

string(13) "Hello, World!"
int(33)

Я бы сказал, все вашипроблема в том, чтобы иметь возможность создавать глобальные переменные внутри функции.Вы можете использовать обычные подходы: global ключевое слово или $ GLOBALS массив.

...