任何人都可以解释这是如何运作的:
${(int)!${0}=$variable->other['class']}::my_static_method();
在这个stackoverflow问题的答案中:
答案 0 :(得分:3)
它与:
相同curl -u "username":"pwd" "https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/solr_clusters/scc2c46f2f_a84c_42d7_8857_a9999704dde4/config"
为什么使用${0}=$variable->other['class'];//value here lets say is 'myClass'
${0}::my_static_method();//here now is myClass::my_static_method(); called
?
因为他只是耍弄。
(int)!
的结果为print (int)!${0}=$variable->other['class'];
。
因为如果在0
设置了任何内容,
${0}=$variable->other['class']
将为print (bool)${0}=$variable->other['class'];
。
然后它会被true
否定,因此它会变为!
并且false
最终会(int)
。
这就是之前设置的变量的名称:0
。
但是,给全局变量一个数字是非常糟糕的做法。
Normaly所有变量必须以${0}
或_
开头。
不知道为什么它的例子,也许是为了取笑人民。
根本不要使用它!
只是为了表明它没有完成;)(工作代码)
A-Za-z
随意发疯。 : - )
答案 1 :(得分:2)
它是一个变量变量语句,使用第一个${ }
${
(int)
!
${0}
$0
=
$0
变量。$variable->other['class']
}
::
所以在Layman的术语中,它可以创建以下语句:
$1::my_static_method();
为什么是数字?因为变量名是由布尔语句创建的,即true或false,所以它被反转并转换为整数。
在PHP中true
和false
等于1
和0
。
失败时$1
,成功时$0
。
总的来说,请记住,您是绕过 PHP解释器的语法错误。虽然变量的特性旨在创建动态变量名称,但我不认为它们意味着它会被滥用,因此它可能意味着您的代码可能会破坏新版本的PHP。一个例子是answer of JustOnUnderMillions,其中 PHP 7 的结果为What? Tom Just Want To Lov€ Tina Arrr!
只是说,无论如何,使用变量变量语句都是糟糕的编程习惯。