微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

聊聊PHP中如果让字符串直接解析函数技巧分享

PHP中如果让字符串直接解析函数?下面本篇文章给大家分享一下PHP 字符串中直接解析函数的写法,希望对大家有所帮助!

PHP 字符串中直接解析函数的写法

1.png

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教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐