Я написал следующий синглтон.Странное поведение при доступе к частному атрибуту
class Singleton {
// object instance
private static $instance;
private function __construct() {}
private function __clone() {}
private $val = 'he';
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new Singleton();
self::$instance->val .= 'llo';
}
return self::$instance;
}
public function doAction() {
echo $this->val;
}
}
Singleton::getInstance()->doAction();
Когда я получаю экземпляр, я добавляю 'llo' в частный атрибут val. И посмотрите «привет» вместо «он», почему я могу получить доступ к частному методу?
Вы спрашиваете, почему это разрешено изменять частную собственность '$ instance-> val' от статического' GetInstance() '? –
, где вы можете получить доступ к «частному методу», если у вас нет частных методов? – voodoo417
@Michael Berkowski, yes – user1156168