在PHP中设置和获取时遇到问题

在PHP中设置和获取时遇到问题,php,oop,get,set,Php,Oop,Get,Set,根据这里的答案: 下面的函数应该可以工作,但是它不产生输出 <?php class UserInfo{ private $username; private $privileges; public function __get($property) { if (property_exists($this, $property)) { return $this->$property; } } public function __set

根据这里的答案: 下面的函数应该可以工作,但是它不产生输出

<?php
class UserInfo{
  private $username;
  private $privileges;

  public function __get($property) {
    if (property_exists($this, $property)) {
      return $this->$property;
    }
  }

  public function __set($property, $value) {
    if (property_exists($this, $property)) {
      $this->$property = $value;
    }

    return $this;
  }
}

$user=new UserInfo;
$user->__set($username,"someuser");
echo $user->__get($username);
?>


这里有什么地方我做错了吗?

您当前的问题是,在将属性名称传递给函数时,必须使用
“username”
而不是未定义的
$username

然而,这并不是神奇的接球手和二传手最初的工作方式。您应该使用
$user->username=“someuser”进行设置将自动触发设置程序:

$user=new UserInfo;
$user->username = "someuser";
echo $user->username;

直接的问题是,在将属性名传递给函数时,必须使用
“username”
,而不是未定义的
$username

然而,这并不是神奇的接球手和二传手最初的工作方式。您应该使用
$user->username=“someuser”进行设置将自动触发设置程序:

$user=new UserInfo;
$user->username = "someuser";
echo $user->username;
设置:

$user->username = "user";
要获得:

$username = $user->username;
设置:

$user->username = "user";
要获得:

$username = $user->username;

调用此行时:

$user->__set($username,"someuser");
作用域中没有$username,您正在将null参数传递到方法调用中

电话应该是

$user->__set('username', 'someuser');

调用此行时:

$user->__set($username,"someuser");
作用域中没有$username,您正在将null参数传递到方法调用中

电话应该是

$user->__set('username', 'someuser');

哇,谢谢。我读了手册,我发誓,我就是不知道这些方法是如何被调用的。这就是为什么他们叫他们魔术。哇,谢谢。我读了手册,我发誓,我就是不知道这些方法是如何被调用的。这就是为什么他们称之为魔法。