我有以下函数实例化一个对象并运行其方法.我想返回$to_return,但问题是即使函数使用’use’关键字,$to_return也不会改变.这是功能:
function some_function($arg){ $to_return = false; $object = new Object; $to_return = $object->METHOD(function($callback) use ($to_return){ $to_return = $some_var; }); $to_return = $object->runMETHOD("some_arg"); return $to_return; }
所以,基本上:
> $to_return返回始终为false
>我想some_function返回$some_var
简而言之:如何让some_function返回对象方法内部更改的对象?
所有你想念的是表明$to_return应该通过引用传递:
function($callback) use (& $to_return)
也是3v4l:https://3v4l.org/Vfp70上的工作示例示例
我不是内部专家,但是当您将它们传递到某个地方时,长篇故事短基元被“复制”,因此您在回调中设置的内容不会被转移到外部.另一方面,对象的行为与预期的一样,因为传递指向对象的指针并修改原始实例.使用甚至普通的stdClass作为这样的转运器也可以工作,如3v4l:https://3v4l.org/m9jJ3所示