【问题标题】:How to replace the ' Call-time pass-by-reference ' on PHP如何替换 PHP 上的“调用时传递引用”
【发布时间】:2023-04-02 00:45:01
【问题描述】:

考虑到 PHP 已经弃用了一些函数和功能,我想重构我的代码以适应 php 5.3。

现在,我必须消除所有 'Call-time pass-by-reference' 。所以,我有三个问题:

1 - 如果我替换:

$myclass->myfunc(&$myvar);

$myvar = $myclass->myfunc($myvar);

会有用吗?

2 - 如果我有类似的情况该怎么办?

$myclass->myfunc(&$myVar, &$ourvar);

3 - 怎么样

$x = &new myclass();

感谢您的宝贵时间,非常感谢您的帮助

【问题讨论】:

    标签: php oop class pointers pass-by-reference


    【解决方案1】:

    首先,您是否熟悉什么是呼唤时间传递敬意?正常的引用传递是通过函数声明某些参数是通过引用传递的,方法是在其声明中的参数前添加&

    调用时按引用传递意味着函数被声明为按值获取这些参数,并且您在事后将其行为更改为按引用传递。调用时通过引用传递真的没有必要。每个函数都应该有一个特定的目的,并且为了正确地完成它的目的,它应该总是通过引用来获取参数,或者总是通过值来获取参数。让一个函数做一些原本不该做的事情是不好的。

    回答您关于$myclass->myfunc(&$myvar);$myclass->myfunc(&$myVar, &$ourvar); 的问题我想说,如果您需要通过引用传递该函数,那么它应该声明为始终通过引用传递。即

    function myfunc(&$x, &$y) { ... }
    

    然后要使用它,您只需在没有& 的情况下调用它

    $myclass->myfunc($myVar, $ourvar);
    

    $x = &new myclass(); 完全不相关。你没有通过任何东西。它仍然是有效的语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2012-11-08
      • 2011-06-07
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多