PHP 相当于 JavaScript “this” 关键字,特别是在对象中
PHP Equivalent of JavaScript "this" keyword, specifically within an object?
在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 test {
private $val = "value";
function fun() {
return $this->val();
}
}
//instantiation:
$obj = new test();
echo $obj->fun();
PHP 是一种实际上支持类的语言,并且不必通过对所有内容使用数组来欺骗
重要的是要注意,你不能只使用一种语言(JS)中的所有东西,并将其"转换"为其他语言(PHP)。您实际上可以通过使用匿名类来接近:
<?php
$o = new class {
public $val = 'I do get seen!';
public function fun() {
// use `this` to reference the current object we are in!
return $this->val;
}
};
var_dump($o->fun());
是否应该这样做...我对此非常怀疑。
不同的语言(特别是基于原型和基于经典OOP的语言)只是做事不同。
相关文章:
- Internet Explorer缺少占位符支持,特别是密码字段
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- 这如何符合“;函数是对象“;在Javascript中
- 微风得到的是实体而不是对象的集合
- 类型错误'未定义'不是对象(正在评估'navigator.connection.type'
- 保存id数组's而不是对象
- 在lodash上有没有一个替代方案.merge.apply(_,x);其中x是对象的数组
- 返回 JavaScript 类值而不是对象引用
- TypeError:undefined不是对象(正在评估'newWindow.focus')
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- javascript数组的长度,其中项是对象
- global.getElementById('..')为null或不是对象
- IE8错误:为null或不是对象,但仍然可以跟踪/控制台注销
- AngularJS错误:请求的键的值不是对象.keys@[本地代码]
- 如何筛选所有属性都是对象的对象
- "属性描述必须是对象“”;错误
- ui.selectmenu投掷'this.newelement.0'为null或不是对象
- 将对象或函数添加到 HTML DOM 元素(特别是画布)
- PHP 相当于 JavaScript “this” 关键字,特别是在对象中
- 如何将对象转换为JavaScript中的字符串,特别是浏览器中的“document”对象