Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php oo引用类成员_Php_Oop_Reference - Fatal编程技术网

php oo引用类成员

php oo引用类成员,php,oop,reference,Php,Oop,Reference,我想将$mymember作为ref传递给Foo的构造函数,这样对它的更改也将直接在$mymember变量上更改 我的代码当前是错误的,我在private&$member上得到了意外的“&”错误 所以我猜我在引用用法上的语法有问题 我试着跟着说:请这样做: class Foo{ private &$member; function __construct(&$member){ $this->member = &$member; } function

我想将$mymember作为ref传递给Foo的构造函数,这样对它的更改也将直接在$mymember变量上更改

我的代码当前是错误的,我在
private&$member上得到了意外的“&”错误
所以我猜我在引用用法上的语法有问题


我试着跟着说:

请这样做:

class Foo{
   private &$member;
   function __construct(&$member){ $this->member = &$member; }
   function doSmtg(){//changes member }
   function doSmtgElse(){//changes member }
}
$myMember = "";
foo = new Foo($myMember);
foo->doSmtg();
echo $myMember;

不能定义变量引用。只能有一个变量包含对另一个变量的引用

除此之外,在定义变量时,您不必告诉PHP要在变量中放入什么内容

因此:
private&$member可以是

private$会员

您做错的第一件事是:

class Foo{
   private $member1;
   private $member2;
   function __construct(){}
   function doSmtg($member1, $member2){
      $this->member1 = $member1;
      $this->member2 = $member2;
      //changes member1 and 2 
   }
   function doSmtgElse(){
      $this->member1 = $member1;
      $this->member2 = $member2;
      //changes member1 and 2 
   }
   function getMember1(){
      return $this->member1;
   }
   function getMember2(){
      return $this->member2;
   }
}
$myMember1 = "";
$myMember2 = "";
$foo = new Foo();
$foo->doSmtg($myMember1, $myMember2);
echo $foo->getMember1.", ".$foo->getMember2;
这在PHP中是不允许的。
你为什么要使用参考资料?引用在PHP中的工作方式不同。PHP引用与其他语言如C或C++不一样。这会导致难以诊断错误和意外行为。@johncode是正确的,您应该让“doSmtg”将您的值作为参数,然后返回修改后的值,这样main就可以知道这些更改,main就可以维护了。但是通过这样做,我可以修改
$myMember
,并且仍然能够在函数中返回一些内容,这不是在性能上更好吗?如果您想返回多个值,您应该修改class属性,
private$member
,然后,main调用
getMember()
yes,但不使用ref.来提高性能?这不是sort方法对给定数组使用引用的原因吗?idk…接受了,因为它为我提供了在php中使用引用变量的正确解决方案。
private &$member;