【问题标题】:php passing an object back from a class functionphp从类函数传回对象
【发布时间】:2012-10-10 23:25:16
【问题描述】:

我有一组 PHP 函数,我想将它们移到一个新类中。其中一个功能是在参数中使用 &$obj 来修改原始对象:

function process_new_place_names(&$obj)

在此函数中对 $obj 所做的任何更改都会传回脚本。

问题是,我也可以在 PHP 类中执行此操作吗?另外,这种方法的术语是什么?

【问题讨论】:

    标签: php class


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      正如 SomeKittens 所说,这在类中是完全可能的。但是,如果$obj 本身就是一个类的实例,而您只需修改其成员变量(称为mutating 对象),则无需通过引用传递它。

      比如下面的代码会输出baz;

      class Foo
      {
          public $bar;
      }
      
      function process_new_place_names($obj)
      {
          $obj->bar = 'baz';
      }
      
      $obj = new Foo();
      $obj->bar = 'bar';
      process_new_place_names($obj);
      echo $obj->bar;
      

      仅当您想更改变量本身的值时,才需要传递引用;例如,重新分配对象引用:

      function process_new_place_names(&$obj)
      {
          $obj = new Foo();
          $obj->bar = 'baz';
      }
      

      【讨论】:

      • @Nick,如果你想知道为什么你的代码使用引用,即使你的函数参数是为了获取一个对象,在 php 5 之前,这实际上是必要的。
      • @rambocoder 我忘记了!感谢 PHP 5。
      猜你喜欢
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2012-02-29
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      相关资源
      最近更新 更多