【发布时间】:2018-08-07 16:23:28
【问题描述】:
PHP 7 添加了对anonymous classes 的支持,但是我似乎找不到任何有关相关范围问题的信息。我知道我可以将 use 关键字与 callables/closures 一起使用来访问外部作用域变量(如 function() use ($outer) { // do work with $outer }),有没有办法使用匿名类来做到这一点?
我希望能够在不依赖匿名类构造函数参数的情况下做到这一点,并且不需要添加 setter 方法或公共属性来存储实例化后的值。
这是一个例子:
$outer = 'something';
$instance = new class {
public function testing() {
var_dump($outer); // would like this to dump the string 'something'
}
};
【问题讨论】:
-
将其传递给方法?
-
所以你没有使用属性,你没有使用构造函数?那你可以使用匿名函数吗?在不知道这个用例是什么的情况下,我们只能推测。
-
@JonStirling 我目前正在使用一个匿名函数,但我想使用一个带有接口的匿名类,这样我就可以推断出使用该可调用对象的更改
-
@AbraCadaver 只是考虑像 Java 这样的语言特性,例如,您可以在匿名类中访问外部作用域变量 - 只是想知道 PHP 是否有一些我需要使用的特殊语法来访问这些变量(如可调用/闭包的
use关键字) -
我希望
new class use ($outer) { .. }能工作
标签: php