首页 > 解决方案 > 什么是 PHP 中的可解引用标量?

问题描述

最近,我在关注这个 PHP talk。关于 PHP7 中的新特性有一部分对我来说真的很奇怪(在谈话的“统一变量语法”部分),它写道:

// support all operations on dereferencable scalars
// (not very useful)
"string"->toLower()
PHP 谈话图像的统一变量语法部分

什么是可取消引用的标量?我知道当我在非对象上调用方法时,例如:

echo "string"->toLower();

我会在 PHP7 中得到以下错误:

Fatal Error: Uncaught Error: Call to a member function toLower() on string

另外,我找不到在字符串上声明方法的方法(就像我们在 JavaScript 中看到的那样);据我所知,没有办法做到这一点。

那么,上面的代码在说什么?我们怎么能做上面的事情?它的用例是什么?笼统地说,是什么"string"->toLower()

注意:注意 PHP 谈话。它说这些东西存在于 PHP7 中。他犯错了吗?我不这么认为。那是由PHP 的创建者Rasmus Lerdorf 举办的一次会议。所以,请不要说“它不存在”,而要说“那是什么”。

提前致谢。

标签: phpobjectmethods

解决方案


简短的回答:将是一个语法糖。

更长的答案:这是一种使用与对象语法一致的语法调用函数的方法。

例如,一个对象(即一个类实例)可以有一个名为“length()”的方法。此方法的调用将使用以下“箭头”语法表示:

$length = $myObject->length();

但是,例如,要获取字符串的长度,目前不能使用相同的语法,因为字符串不是对象。相反,您必须将变量名称放在括号内,作为strlen函数的参数,即:

$length = strlen($myString);

你提到的是一个统一语法的想法,即

$length = $myString->strlen();

将是调用该函数的另一种可能的语法。strlen这将使标量(和数组)上的操作在语法上更接近对象的方法调用。

请注意,截至 2018-09-14,PHP 尚不支持此语法。


推荐阅读