2016-10-17 2 views
0

Я знаю, что можно повторить переменные непосредственно в текстеКак Eval (или эхо) переменный класса в тексте в PHP

$apples = 4; 
echo "You have $apples apples." 

Как сделать это с переменным классом? Это не работает.

class service { 
    public $active; 
} 
$service["test"] = new service(); 
$service["test"]->active = true; 

echo "Test service is: $service[test]->active"; 

Я спрашиваю, потому что мне нужно напечатать переменную класса в eval (я использую MyBB-движок для форума).

eval("\$site .= \"".$templates->get($template)."\";");

Раньше я использовал {$var} и она работала, но {$var[sth]->sth} не делает.

+0

'$ сервиса = Новый сервис(); $ service-> active = 'active'; echo $ service-> active; ' –

+0

Сначала создайте экземпляр своего класса! Тогда попробуйте и используйте его! – RiggsFolly

+0

И что имеет '$ service [" test "]' связано с ценой cheeze? Это говорит о том, что у вас есть массив объектов! Вы?? – RiggsFolly

ответ

0

Это работает, и нет никакой необходимости в eval()

class service { 
    public $active; 
} 
$service["test"] = new service(); 
$service["test"]->active = 99; 

echo "Test service is: {$service['test']->active}"; 

Или

class service { 
    public $active; 
} 
$service["test"] = new service(); 
$service["test"]->active = true; 

echo "Test service is: " . $service['test']->active == true ? 'TRUE' : 'FALSE'; 
+0

Благодарим за быстрый ответ. Хорошо, он работает с эхом, но не с eval. Мне нужно eval, потому что, как я уже сказал, мой форум использует его для распечатки страницы. У меня есть шаблон страницы (html) и код страницы (php). Шаблон напечатан следующим образом: 'eval (" \ $ site. = \ "". $ Templates-> get ($ template). "\"; ");'. Если у меня есть, например, '$ test = 4;' в коде (php), то я пишу в шаблоне {$ test} и печатаем его с помощью шаблона. Я хочу сделать то же самое с классом varriable, но '{$ service ['test'] -> active}' does not work. – user2321517