<? Php Error_reporting (E_ALL ); Class test { Public $ public; Private $ private; Protected $ protected; Static $ instance; Public function _ construct (){ $ This-> public = 'public <br> '; $ This-> private = 'private <br> '; $ This-> protected = 'protected <br> '; } Static function tank (){ If (! Isset (self: $ instance [get_class ()]) { $ C = get_class (); Self: $ instance = new $ c; } Return self: $ instance; } Public function pub_function (){ Echo "you request public function <br> "; Echo $ this-> public; Echo $ this-> private; // private, which can be called internally Echo $ this-> protected; // protected, which can be called internally $ This-> pri_function (); // private method, which can be called internally $ This-> pro_function (); // protected method, which can be called internally } Protected function pro_function (){ Echo "you request protected function <br> "; } Private function pri_function (){ Echo "you request private function <br> "; } } $ Test = test: tank (); Echo $ test-> public; Echo $ test-> private; // Fatal error: Cannot access private property test: $ private Echo $ test-> protected; // Fatal error: Cannot access protected property test: $ protected $ Test-> pub_function (); $ Test-> pro_function (); // Fatal error: Call to protected method test: pro_function () from context $ Test-> pri_function (); // Fatal error: Call to private method test: pri_function () from context ?> <? Php error_reporting (E_ALL); class test {public $ public; private $ private; protected $ protected; static $ instance; public function _ construct () {$ this-> public = 'public <br> '; $ this-> private = 'private <br> '; $ this-> protected = 'protected <br> ';} static function tank () {if (! Isset (self ::$ instance [get_class ()]) {$ c = get_class (); self ::$ instance = new $ c;} return self :: $ instance;} public function pub_function () {echo "you request public function <br>"; echo $ this-> public; echo $ this-> private; // private, echo $ this-> protected; // protected can be called internally, and $ this-> pri_function (); // private method can be called internally, you can call the $ this-> pro_function (); // protected method internally. You can call} protected function pro_functi internally. On () {echo "you request protected function <br>" ;}private function pri_function () {echo "you request private function <br>" ;}}$ test = test:: tank (); echo $ test-> public; echo $ test-> private; // Fatal error: Cannot access private property test: $ private echo $ test-> protected; // Fatal error: Cannot access protected property test: $ protected $ test-> pub_function (); $ test-> pro_function (); // Fatal error: Call to protected method test: pro_function () from context $ test-> pri_function (); // Fatal error: Call to private method test: pri_function () from context?> As shown in the preceding example, Public: it can be called inside the class and instantiated. Private: class can be called internally. If it is instantiated, an error is returned. Protected: it can be called internally by class. If it is instantiated, an error is returned. <? Php Class test { Public $ public; Private $ private; Protected $ protected; Static $ instance; Public function _ construct (){ $ This-> public = 'public <br> '; $ This-> private = 'private <br> '; $ This-> protected = 'protected <br> '; } Protected function tank () {// Private method cannot be inherited, changed to public, protected If (! Isset (self: $ instance [get_class ()]) { $ C = get_class (); Self: $ instance = new $ c; } Return self: $ instance; } Public function pub_function (){ Echo "you request public function <br> "; Echo $ this-> public; } Protected function pro_function (){ Echo "you request protected function <br> "; Echo $ this-> protected; } Private function pri_function (){ Echo "you request private function <br> "; Echo $ this-> private; } } Class test1 extends test { Public function _ construct (){ Parent: tank (); Parent: :__ construct (); } Public function tank (){ Echo $ this-> public; Echo $ this-> private; // Notice: Undefined property: test1 ::$ private Echo $ this-> protected; $ This-> pub_function (); $ This-> pro_function (); $ This-> pri_function (); // Fatal error: Call to private method test: pri_function () from context 'test1' } Public function pro_extends_function (){ Echo "you request extends_protected function <br> "; } Public function pri_extends_function (){ Echo "you request extends_private function <br> "; } } Error_reporting (E_ALL ); $ Test = new test1 (); $ Test-> tank (); // The subclass and its parent class have attributes and methods of the same name. when instantiating the subclass, the attributes and methods in the subclass will overwrite the parent class. ?> |