Доступ к внешнему объекту из php-кода внутри класса, расположенного в строке, выполняемой с помощью EVAL

У меня есть этот код:

class Context
{
...
$public details;
...
}

$context = new Context();

class Info
{
....
$public $infoContext;

public function show()
{
$infoContext = "<html><head></head><body><?php echo $context->details; ?></body><html>";
eval( ' ?>'. $infoContext. '<?php ');
}
}

$inf = new Info();

$info->show();

К сожалению, этот код не работает, но это то, чего я хочу добиться, я хочу выполнить код php echo $ context-> details; Но я не знаю как, пожалуйста, помогите …

1

Решение

впрыскивать $context в качестве аргумента конструктора для вашего Info class, так что вы можете сохранить его как свойство (чтобы он больше не был «внешним» объектом); затем используйте обычную строку для построения $infoContext а не эта ужасная строка и Eval

class Info
{
protected $context;
....
public $infoContext;

public function __construct($context) {
$this->context = $context;
}

public function show()
{
$this->infoContext = "<html><head></head><body>" . $this->context->details . "</body><html>";
echo $this->infoContext;
}
}

$context = new Context();
$inf = new Info($context);$info->show();
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector