无法访问私有属性getset :: $ name

时间:2017-10-27 19:49:56

标签: php oop

我试图学习神奇的方法__GET和__SET。现在我正在研究__GET方法。

我收到了无法访问私有财产错误。

这是我的代码:

<?php

  class getset {

    private $name;

    public function __set($property, $value) {
      if((property_exists($this, $property))) {
        $this->$property = $value;
        echo "Successfully updated {$property} to {$value}";
      } else {
         echo "This failed.";
      }
    }

  }

  getset::$name = 'Thomas';

?>

我不确定发生了什么。我已经查看了__SET函数中的参数,我似乎正在正确地关注它。

我不确定发生了什么。这是我的完整代码:

  

致命错误:未捕获错误:未定义的类常量&#39; name&#39;在C:\ xampp \ htdocs \ OOP Lessons \ Classes \ getset.inc.php:22堆栈跟踪:#0 {main}在第22行的C:\ xampp \ htdocs \ OOP Lessons \ Classes \ getset.inc.php中引发

该行是:

getset::$name = 'Thomas';

1 个答案:

答案 0 :(得分:1)

以下是一个可以帮助您的示例:

 <?php
      class getset {

        private $name;

        public function __set($property, $value) {
          if((property_exists($this, $property))) {
            $this->$property = $value;
            echo "Successfully updated {$property} to {$value}";
          } else {
             echo "This failed.";
          }
        }

      }
    $newObj=new getset();
    $newObj->name='Thomas';
    print_r($newObj);
?>

//输出:

    Successfully updated name to Thomas

    getset Object
    (
       [name:getset:private] => Thomas
    )