2017-10-27 9 views
0

私は魔法のメソッド__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関数のパラメータを見てきました。私はそれを正しくフォローしているようです。

私は何が起こっているのか分かりません。ここに私の完全なコードは次のとおりです。

Fatal error: Uncaught Error: Undefined class constant 'name' in C:\xampp\htdocs\OOP Lessons\Classes\getset.inc.php:22 Stack trace: #0 {main} thrown in C:\xampp\htdocs\OOP Lessons\Classes\getset.inc.php on line 22

その行は次のようになります。ここでは

getset::$name = 'Thomas'; 
+0

あなたは '$ name'に値を割り当てていますか? –

+1

プライベートプロパティはクラスの外部からアクセスすることができないので、privateを呼び出しました –

+0

@PraveenM申し訳ありません、私のgetetの行は 'getset :: $ name = 'Thomas';'私はそれを編集しました。 –

答えて

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 
    ) 
+0

OK。本当にありがとう。私は偶然、スコープ分解能演算子を使用しました。私はそれらとポインタの違いを調べなければならないでしょう。本当にありがとう! –

関連する問題