【发布时间】:2016-02-10 17:08:10
【问题描述】:
在 JS 中,当定义一个对象时,如果对象属性之一是一个函数,在该函数中使用 this 关键字将返回您正在处理的当前对象。如果您想检索同一对象中其他属性的值,这将非常有用。
例如:
// Javascript Code
var val = 'I never get seen.';
var o = {
val: 'I do get seen!',
fun: function() {
// use `this` to reference the current object we are in!
return this.val;
}
};
// Outputs 'I do get seen!'
console.log(o.fun());
但是,我不知道如何在 PHP 中进行等效操作。我正在运行 PHP 5.6,所以我可以访问匿名函数。这是我的示例代码:
<?php
// PHP Code
$val = 'I never get seen.';
$o = array(
'val' => 'I do get seen!',
'fun' => function() {
/**
* I've tried:
*
* return $this.val;
* return $this->val;
* return $this['val'];
* return this.val;
* return this->val;
* return this['val'];
*
* None of them work.
*/
return $this->val;
}
);
// Should output 'I do get seen!'
echo $o['fun']();
?>
编辑:
正如其他人指出的那样,我“应该”使用真正的类,并以这种方式访问类属性。
但是,在我正在处理的代码中,我没有进行这种范式改变的奢侈。如果没有其他选择,我会记住,在 PHP 中没有与此想法完全对应的一对一。
【问题讨论】:
-
你应该注意到 PHP 实际上有
class关键字来定义一个类。并非所有东西都是数组。 -
我不完全确定您的方法是否正确。在 PHP 中,
$this用于类/对象的上下文中。 -
PHP 和 JS 是不同的语言。并非一切都是对象...
-
在您发布的代码示例中,
echo $o['val'];应该为您提供所需的内容。不过,您可能仍然会遇到一些其他语法错误。
标签: javascript php class object this