今天我发现了一些奇怪的php代码:
function wt_render() {
echo '<div class="wrap theme-options-page clearfix"';
global $wp_version;
if(version_compare($wp_version, "3.5", '>')){
echo ' data-version="gt3_5"';
}
echo '>';
echo '<form method="post" action="">';
foreach($this->options as $option) {
if (method_exists($this, $option['type'])) {
$this->{$option['type']}($option);
}
}
echo '</form>';
echo '</div>';
}
这是什么意思?
我相信括号$ option ['type']是解释器应使用的变量。没有它们,我得到一个错误:“数组到字符串的转换”。
我对吗?
答案 0 :(得分:2)
这就是您请求数组键值的方式。 所以$ option是一个带有键的数组。这些键之一就是“类型”。
要获取 array $ option的值,您可以像这样在方括号之间添加键
$options['type']
如果$ options是一个对象,则可以这样获得值:
$options->type
使用大括号是因为在脚本中,您使用了$ options ['type']的值来调用当前对象中的函数。
如果$ options ['type']的值为示例,则下面的代码相等
$this->{$options['type']}($options);
等于
$this->example($options);
答案 1 :(得分:0)
此语法可用于使用方法的指针
示例
$dateTime = new DateTime();
$dateTime->{"add"}(new DateInterval("P3D"));
$methods = array("getTimezone", "getTimestamp", "getOffset");
foreach($methods as $method) var_dump($dateTime->{$method}());