У меня есть Json, который содержит несколько континтов, которые я бы хотел автоопределить. Он отлично работает с простыми "key": "val"
заявления, но я не могу заставить его работать на eval
staments:Php: json to константы
$cat test.php
<?php
function objDefinition($obj) {
foreach ($obj as $key => $val) {
$val = $val;
\define($key, $val);
} }
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval('time() + (10 * 365 * 24 * 60 * 60)')",
]));
objDefinition($json);
echo COOKIE_EXP;
$php test.php
eval('time() + (10 * 365 * 24 * 60 * 60)')
Я знаю, что eval
зло и так далее, но этот метод позволит сэкономить мне много кода!
Спасибо!
json предназначен только для статических значений. он не может содержать выражения как ничего, кроме строк простого текста. так что да, единственный способ сделать это - через eval() –
Вы получаете какую-либо ошибку? Можете ли вы его предоставить? – taxicala
@MarcB ok, но 'eval' тоже не работает ... помещая' eval' внутри $ val, я бы ожидал, что 'define' будет правильно работать: вместо этого значение' COOKIE_EXP' равно 'eval ('time() + (10 * 365 * 24 * 60 * 60) ') '... – masavini