【问题标题】:Having trouble getting __set to set and __get to get in PHP无法让 __set 设置和 __get 进入 PHP
【发布时间】:2011-11-10 19:26:04
【问题描述】:

根据这里的答案:Getter and Setter? 以下函数应该可以工作,但是它不会产生任何输出。

<?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);
?>

http://codepad.org/jwMaeVMN

我在这里做错了吗?

【问题讨论】:

    标签: php oop get set


    【解决方案1】:

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

    但是,这并不是魔术 getter 和 setter 的工作方式。您应该使用$user-&gt;username = "someuser"; 进行设置,这将自动触发设置器:

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

    【讨论】:

    • 哇,谢谢。我读了我发誓的手册,我只是不知道这些方法是如何被调用的。这一定是他们称它们为魔法的原因。
    【解决方案2】:

    设置:

    $user->username = "user";
    

    获取:

    $username = $user->username;
    

    【讨论】:

      【解决方案3】:

      当这行被调用时:

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

      范围内没有 $username,并且您将 null 参数传递给方法调用。

      调用应该是

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-10
        • 2010-12-09
        • 1970-01-01
        • 2016-06-09
        • 2023-03-20
        • 2013-07-17
        • 2011-03-20
        • 2012-04-05
        相关资源
        最近更新 更多