【问题标题】:What is this feature called and where is it documented? Dynamic object lookup?这个功能叫什么,它在哪里记录?动态对象查找?
【发布时间】:2014-03-19 03:28:27
【问题描述】:

我正在寻找有关 PHP 功能的更多信息,如下所示:

$obj->{$prop};
$obj->{$method}();

它叫什么?是否记录在案?在哪里?

编辑:

澄清一下 - 我问的是带花括号的语法,您可以使用它来动态复杂地查找对象属性或方法。例如,正如php -l 所报告的,这些是有效的:

echo $obj->{"val"};               // property lookup with string literal
echo $obj->{$method()->{$var}}(); // complex method lookup
echo $obj::${$other::$something}; // static property lookup

但这不是:

echo $obj::{$other::$something};  // class constant lookup

如果存在这样的文档,我正在寻找一些“官方”的东西,它概述了在这种语法下什么是有效的,什么是无效的。

【问题讨论】:

  • @Claudiordgz 这很有趣,但我正在寻找有关此功能有效或无效的“官方”信息(无论这在 PHP 中意味着什么)。我正在为编写 PHP 的人开发工具,但除了反复试验之外,我对有关此功能的具体信息一无所知。

标签: php syntax language-features


【解决方案1】:

strings 中使用“大括号语法”的官方文档在这里:

http://www.php.net/manual/en/language.types.string.php

查看“变量解析”(复杂)部分,了解使用它来查找对象属性等的详细信息。

您可能需要使用“大括号语法”的另一种情况是使用“变量变量”。

这是当您想使用一个变量来保存另一个变量的名称时。

这里记录了这一点以及可能的用途:

http://www.php.net/manual/en/language.variables.variable.php

【讨论】:

  • 嗯,这看起来特定于字符串中的变量解析。我认为我要问的功能是不同的,可能会有一些差异。不过,它似乎确实相关。
【解决方案2】:

http://us1.php.net/call_user_func

mixed call_user_func (callable $callback [, mixed $parameter [, mixed $... ]])

获取变量就是

$obj->$variable

【讨论】:

  • 谢谢,但我知道该功能的一般用途。我正在开发 PHP 工具,我需要了解有关此功能有效和无效的更多具体信息,但我无法找到任何文档。我在您发布的链接中没有看到任何相关内容。
  • us1.php.net/manual/en/language.types.callable.php 这个页面解释了什么是有效的可调用变量。是这个意思吗?
  • 我在那里也看不到。我的意思是带有花括号的语法,它可以让您执行复杂的动态操作来查找对象属性或调用对象方法。我开始觉得这个功能就像 In-n-out 的秘密菜单......
  • 你说得对,我在花括号语法上找不到任何官方信息。会继续寻找。
  • 我认为这个可能和你得到的一样接近。 php.net/manual/en/language.variables.variable.php
猜你喜欢
  • 1970-01-01
  • 2018-12-19
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 2022-10-01
  • 2013-07-22
相关资源
最近更新 更多