php 有内置方法可以将字符串转表达式的么?

2014-03-04 11:04:57 +08:00
 funwee
今天有人来问一个的问题

if(expr){
echo '成立';
}else{
echo '不成立';
}

一个在普通不过的判断语句了,可那人把判断表达式(expr)用一个变量来存储
结果怎么执行都为真 原因应该是被当成字符串来处理了吧
我查了下 好像没有能把字符串转表达式的方法,如果非要这么实现,应该怎么处理?
为啥v2ex 不能用tab 囧
4044 次点击
所在节点    PHP
14 条回复
funwee
2014-03-04 11:12:09 +08:00
没人来科普下么 囧
看来越是简单的问题,越是坑啊!!!
shiny
2014-03-04 11:16:35 +08:00
为什么要这么做………… eval 呀,但是有安全隐患,谨慎使用。
一定是设计有问题。
shiny
2014-03-04 11:18:37 +08:00
另外建议从头到尾读手册三遍,每次读都有收获。
likexian
2014-03-04 11:21:50 +08:00
funwee
2014-03-04 11:26:27 +08:00
@shiny 没问他为啥要这么做 只是单纯实现上考虑 要怎么实现 eval好像也不行啊 囧
shiny
2014-03-04 11:28:37 +08:00
@funwee 拼接一个 return 来返回执行后的变量。likexian 说的 assert 看上去也很适合你的场景。
funwee
2014-03-04 11:30:18 +08:00
@likexian 搞定 看来手册还是要多看才行
funwee
2014-03-04 11:31:20 +08:00
@shiny 嗯 assert确实可以搞定这种情况 嘿 看来手册还是不够熟 我找了好久都没找到合适的
shiny
2014-03-04 11:33:09 +08:00
@funwee 看了 assert 的用法我也觉得我手册读少了哈哈,而且测试也写少了……
xdazz
2014-03-04 11:53:40 +08:00
问题是你这个表达式从哪里来的,用户输入? 第三方API的结果? 这样的代码,我只能闻到bad smell.
anewg
2014-03-04 11:54:49 +08:00
funwee
2014-03-04 13:13:56 +08:00
@xdazz 我并没有去追问他为什么要这样写 只是好奇最终该如何去实现这个奇葩的需求...
oott123
2014-03-04 14:22:29 +08:00
这种需求有种不可控的感觉…用起来不会感觉不安么?
另外贴小段代码的话贴到 gist 里面比较好。
ichou
2014-03-05 10:01:27 +08:00
这种用法虽然很有用 但是是个不安定因素 不能确信处理好所有可能的情况建议慎重点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/102783

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX