2017-01-30 1 views
0

Ich habe eine dumme Zweifel.
Ich gründe Benutzername Eigenschaft als privat in Benutzerklasse
Aber Nach den Regeln des Privateigentum nicht
in der Kinderklasse oder geerbt und außerhalb der Klasse zugänglich sein soll, aber es ist in meinem Code geschieht. Ich will nur wissen, wo ich falsch gemacht habe.PHP Privateigentum sollte nicht zugänglich sein in Kind Klasse

<?php 
    class User{ 
     private $username; 
    } 
    class UserRepository extends User{ 
     public function get(){ 
      return $this->username; 
      //this should give error can't access private property 
     } 
     public function set($username){ 
     $this->username=$username; 
     //this should give error can't access private property 
     } 
    } 

    $UserReposetry =new UserRepository; 
    $UserReposetry->username='daulat';//this should give error. 
    echo $UserReposetry->username;//this should give error. 

Es sollte nicht funktionieren, aber es funktioniert.

+2

Ja, das ist PHP. Tatsächlich greifen Sie nicht auf den privaten '$ username' der Klasse' User' zu, sondern auf eine neue 'public' (da nicht spezifizierte)' $ username' Eigenschaft, die Sie durch Zuweisung des Wertes 'daulat' erstellt haben. – xzoert

Antwort

1

No way, siehe Hier den Code und Ergebnis (Fehler)

<?php 
class User{ 
    private $username="aaa"; 
} 
class UserRepository extends User{ 
    public function get(){ 
     return $this->username; 
    } 

} 
$UserReposetry =new UserRepository; 
echo $UserReposetry->get();//this should give error. 

Ausgabe sehen:
Hinweis: nicht definierte Eigenschaft: UserRepository::$username in C: \ Benutzer ...... ..... index.php auf Linie 7
(Um diese Mitteilung zu sehen, müssen Sie Ihre Fehlermeldung als E_ALL setzen) Und Zeile 7 bedeutet return $this->username;, versuchen Sie mit :: Parent Key Wort zu

In Ihrem Code: Sie setzen gerade eine neue Variable. Also missverstehen Sie nicht, dass Code private Mitglieder verwendet.

+0

Ich bekomme immer noch keinen Fehler. schwarze Seite – daulat

+0

aktivieren Fehler melden in Ihrer php.ini-Datei oder verwenden Sie PHP-Code, um Fehlerberichte zu aktivieren. Sie erhalten die gleiche Fehlermeldung, die ich bekomme. Verwenden Sie diesen Code nicht von Ihnen, weil Sie gerade eine Variable erstellen. Um zu verstehen, diesen Code ausführen. Um den Fehler zu sehen, setzen Sie 'ini_set ('error_reporting', E_ALL);' auf Ihre PHP-Datei – webDev

+1

Aktivieren Sie die Fehlerberichterstattung .. Für Benutzerklasse gibt es Fehler Schwerwiegender Fehler: Uncaught Fehler: Kann nicht auf private Eigenschaft zugreifen Benutzer :: $ username in/var/www/test.com/public_html/demo/index.php: 15 Stack-Trace: # 0 {main} geworfen in /var/www/test.com/public_html/demo/index.php on line 15 – daulat

Verwandte Themen