gpt4 book ai didi

php - 返回一个带有可变参数列表的方法作为 PHP 中的引用

转载 作者:可可西里 更新时间:2023-10-31 23:49:57 26 4
gpt4 key购买 nike

我试图从一个方法返回一个值作为 PHP5.3 中的引用。我可能会以完全错误的方式进行此操作,但我正在使用一些较新的 5.3+ 功能加快旧项目的速度。

下面是我用来解释正在发生的事情的例子:

class Foo
{
static $foobar = 5;

function &bar()
{
return self::$foobar;
}
}
// Doesn't work
//$test1 = &call_user_func_array(array("Foo","bar"),array());

// Doesn't work
//$test1 = &call_user_func_array("Foo::bar",array());

// Doesn't work
//$f = new Foo; $test1 = &call_user_func_array(array($f,"bar"),array());

// WORKS
//$test1 = &Foo::bar();

//Doesn't work
//$function = "Foo::bar";
//$test1 = &$function();

// WORKS
$f = new Foo; $test1 = &$f->bar();

$test2 = Foo::bar();

var_dump($test1);
var_dump($test2);

$test1 = 10;
echo "----------<br />";

var_dump($test1);
var_dump($test2);
var_dump(Foo::bar()); //returns 10 when working, 5 when not working

最后一个 Foo::bar() 应该返回 10,因为 $test1 应该是对 Foo::$foobar 当一切正常时。

我意识到这个例子还使用了一些时髦的遗留 PHP 调用 Foo::bar 和方法 bar() 没有被指定为静态,但仍然能够通过 ::

调用

任何帮助将不胜感激,因为到目前为止我唯一的解决方法是在参数列表上设置一个开关,并根据存在的参数数量直接调用该方法。

最佳答案

这只是将 $test1 分配给 $foobar 的值(即 5)

$test1 = &$f->bar();

这只是用 10 覆盖 $test1 中包含的值

$test1 = 10;

如果你想更新 Foo 中的值,使用

$f->foobar = 10;

关于php - 返回一个带有可变参数列表的方法作为 PHP 中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8522665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com