1
好的,所以我想知道是否有任何(其他,并且最好是简单的)将字符串转换为变量的方法。将字符串转换为变量
我的代码,它的工作原理,如下所示:
echo eval('return $'. $date . ';');
$ date包含一个字符串。现在,代码工作,和我很好离开它,因为它是,如果没有别的,因为$日期是从预先编程类声明呼吁:
Time::Format($id = 'id', $name = 'name', $date = 'date->format(Y)');
我想问的原因是由于PHP官方免责声明/警告其使用:eval()语言结构非常危险,因为它允许执行任意PHP代码。因此不鼓励它的使用。如果您已经仔细核实没有其他选择而不是使用此构造,请特别注意不要将任何用户提供的数据传递给它,而不事先进行适当的验证。因此,我认为使用它是安全的,因为没有任何用户输入的数据被PHP评估,它是我设置的编码器的字符串,但是我想第二个意见是它的使用,以及另一个简单的方法来做到这一点(因为如果我能避免它,我宁愿不使用一个复杂的和可能长的代码块来完成简单的事情(只要它是安全的快速和肮脏的)
好了,不工作输出(在我的EXA mple)“date-> format(Y)”,它无法将字符串转换为变量,并执行eval对它做的事情(并允许它作为变量执行)。由于使用了eval,当我将$ date的eval作为变量回显时,它会回显用户输入的年份(因为它是硬编码的)。虽然PHP的变量变量有趣,但并不能完全回答我的问题。 – 2013-04-04 23:21:28
而不是将字符串转换为变量,为什么不将字符串存储在变量中,然后根据需要调用它? – 2013-04-04 23:22:56
据我所见,让它工作的唯一方法是将字符串转换为变量,因为字符串必须是一个变量才能工作。日期 - >格式(Y)不会做任何事情,但$ date-> format(Y)起作用。 – 2013-04-04 23:31:25