PHP 中的字符串理论上是不能够解析函数的,仅能够解析变量。最近发现一种特殊的写法,是可以让字符串直接解析函数的。
写法
// 单行${!${''} = 代码}// 多行${!${''} = 代码}
个人认为这种写法实际上还是通过解析变量实现的。=
左边是一个特殊名称的变量,=
右边只要符合赋值变量的代码块均可以在字符串中解析。
示例
以下代码仅供学习交流,实际工作中不建议用这种写法。
一、
$fruits = implode('、', ['apple', 'banana']);var_dump("fruits: $fruits."); // 正常写法解析变量// string(23) "fruits: apple、banana."var_dump("fruits: implode('、', ['apple', 'banana'])."); // 错误写法不能够解析函数// string(44) "fruits: implode('、', ['apple', 'banana'])."var_dump("fruits: ${!${''} = implode('、', ['apple', 'banana'])}."); // 特殊写法解析函数成功// string(23) "fruits: apple、banana."var_dump("fruits: ${!${''} = implode('、', [ 'apple', 'banana' ])}."); // 多行书写依然解析函数成功// string(23) "fruits: apple、banana."
二、
var_dump("fruits: ${!${''} = $fruit ?? 'apple'}.");// string(14) "fruits: apple."var_dump("fruits: ${!${''} = isset($fruit) ? $fruit : 'apple'}.");// string(14) "fruits: apple."
三、
$fruit = function (){ return 'banana';};var_dump("fruits: ${!${''} = $fruit() }.");// string(15) "fruits: banana."var_dump("fruits: ${!${''} = call_user_func(function (){ $fruits = [ 'apple', 'banana' ]; return implode('、', $fruits);}) }.");// string(23) "fruits: apple、banana."
四、
class Fruit{ public function __toString() { return 'banana'; }}var_dump("fruits: ${!${''} = new Fruit() }.");// string(15) "fruits: banana."
推荐学习:《PHP视频教程》 总结
以上是内存溢出为你收集整理的聊聊PHP中如果让字符串直接解析函数(技巧分享)全部内容,希望文章能够帮你解决聊聊PHP中如果让字符串直接解析函数(技巧分享)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)