我正在尝试通过匿名函数转储对象私有属性的元素 - 当然我可以通过许多其他方式实现这一点,但这突出了一个我无法立即解决的 PHP 难题,除了$foo = $this 并使用 $foo - 但这不会给我私人的东西,所以......建议?
示例代码:
class MyClass
{
private $payload = Array( 'a' => 'A element', 'b' => 'B element');
static $csvOrder = Array('b','a');
public function toCSV(){
$values = array_map(
function($name) use ($this) { return $this->payload[$name]; },
self::$csvOrder
);
return implode(',',$values);
}
}
$mc = new MyClass();
print $mc->toCSV();
我相信绝对没有办法直接按照你的建议去做。
但是,您可以通过将匿名方法设置为类方法(这不是您所要求的,但它可能是一个实用的解决方案)或从其中提取您需要的所有内容来解决此问题$this
显式并将提取的值传递到函数中:
class MyClass
{
private $payload = Array( 'a' => 'A element', 'b' => 'B element');
static $csvOrder = Array('b','a');
public function toCSV(){
$payload = $this->payload;
$values = array_map(
function($name) use ($payload) { return $payload[$name]; },
self::$csvOrder
);
return implode(',',$values);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)