php自动加载变量类名

时间:2016-09-01 13:52:17

标签: php variables autoload

任何人都可以解释这是如何运作的:

${(int)!${0}=$variable->other['class']}::my_static_method();

在这个stackoverflow问题的答案中:

error when using variable class name and static method

2 个答案:

答案 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)
    • 将以下语句的结果转换为整数
  • !
    • Not statement,反转布尔结果。
  • ${0}
    • 创建变量$0
    • 这通常会导致解析错误,预计 T_VARIABLE 而不是 T_LNUMBER
  • =
    • 设置$0变量。
  • $variable->other['class']
    • 这是一个对象变量,在其他地方定义,它做什么或它拥有什么我不知道。
  • }
    • 第一个变量名称的结尾。
  • ::
    • 从布尔语句
    • 创建的类名调用静态方法

所以在Layman的术语中,它可以创建以下语句:

$1::my_static_method();

为什么是数字?因为变量名是由布尔语句创建的,即true或false,所以它被反转并转换为整数。 在PHP中truefalse等于10

失败时$1,成功时$0

总的来说,请记住,您是绕过 PHP解释器的语法错误。虽然变量的特性旨在创建动态变量名称,但我不认为它们意味着它会被滥用,因此它可能意味着您的代码可能会破坏新版本的PHP。一个例子是answer of JustOnUnderMillions,其中 PHP 7 的结果为What? Tom Just Want To Lov€ Tina Arrr!

只是说,无论如何,使用变量变量语句都是糟糕的编程习惯。