Bemerken etwas über PHP-Klassen, und ich weiß nicht, ob es ein Fehler ist oder warum es funktioniert, das ist der Code:PHP-Klasse Privateigentum und Methode
<?php
class A {
private $prop = 'value';
public function fun()
{
$obj = new A;
$obj->echoProp();
}
private function echoProp()
{
echo 'Prop has value: '.$this->prop;
}
}
$obj = new A;
$obj->fun();
Und das Ergebnis ist kein Fehler, wie Ich habe damit gerechnet, dass ich eine private Methode anrufe (getestet mit PHP 5.3.10-1ubuntu3.7 mit Suhosin-Patch). Das Ergebnis ist "Prop hat Wert: Wert"
Wie würden Sie erwarten, dass private Methoden anstelle von öffentlichen Methoden aufgerufen werden? – str
Um genau zu sein, rufen Sie keine private Methode auf, sondern rufen eine öffentliche Methode auf, die die private Methode aufruft. Die public-Methode hat Zugriff auf die private Methode, aber der Aufruf von $ obj-> echoProp(); wird fehlschlagen, weil Sie in diesem Fall die private Methode aufrufen. Wenn Ihre Erwartung wahr war, konnte nichts eine private Methode aufrufen. – djheru