2017-10-27 1 views
0

Ich versuche, die magischen Methoden __GET und __SET zu lernen. Im Moment arbeite ich an der __GET-Methode.

Und ich bekomme den Fehler kann nicht auf private Eigenschaft zugreifen.

Hier ist mein Code:

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

?> 

Ich bin nicht sicher, was los ist. Ich habe mir die Parameter in einer __SET-Funktion angeschaut und ich glaube, ich befolge sie richtig.

Ich bin mir nicht sicher, was passiert. Hier ist mein vollständiger Code:

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

Diese Linie ist:

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

Wo Ordnen Sie den Wert $ name zu? –

+1

Private Eigenschaft kann nicht außerhalb der Klasse zugegriffen werden, so dass es private genannt –

+0

@PraveenM Sorry, meine getset Codezeile sollte 'getset :: $ name = 'Thomas';' Ich habe es bearbeitet. –

Antwort

1

Hier ist ein Beispiel, das Ihnen helfen kann:

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

// Ausgabe:

Successfully updated name to Thomas 

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

OK. Vielen Dank. Ich habe versehentlich einen Scope-Resolution-Operator benutzt. Ich muss den Unterschied zwischen ihnen und Zeigern nachschlagen. Vielen Dank! –

Verwandte Themen