As in other languages, it is also restricted by keyword Public,protected,private:
<?php/** * Definition MyClass */class MyClass {public $public = ' publicly ';//Common protected $protected = ' Prote CTED ';//protect private $private = ' private ';//Private Function Printhello () {echo $this-& Gt;public;echo "<br/>"; echo $this->protected;echo "<br/>"; echo $this->private;echo "<br/>"; }} $obj = new MyClass (); Echo $obj->public; Can//echo $obj->protected; Fatal error//echo $obj->private; Fatal error $obj->printhello (); Output public, Protected and Private/** * Definition MyClass2 */class MyClass2 extends MyClass {//For the common and protected methods or members, we can Re-declare, but private not to protected $protected = ' Protected2 '; Rewrite function Printhello () {echo "This is MyClass2:"; echo "<br/>"; echo $this->public;echo "<br/>"; echo $this->protected;echo "<br/>"; Echo $this->private;ecHo "<br/>"; Cannot access the private property of the Parent class}} $obj 2 = new MyClass2 (); Echo $obj 2->public; Can//echo $obj 2->private; //echo $obj 2->protected; Not defined Fatal error $obj 2->printhello (); Output public, Protected2, Undefined?>
Of course, with these access controls, we can also implement the same accessible control for the function:
<?php/** * Definition MyClass */class MyClass {///constructor must be public public function construct () {}/ /declares a public method public function Mypublic () {}//Declares protected method protected function myprotected () {}/Declaration private method Private Function Myprivate () {}//default is Public function Foo () {//class can be accessed directly $this->mypublic (); $this->myprotected (); $this->myprivate (); }} $myclass = new MyClass; $myclass->mypublic (); Can be $myclass->myprotected (); Fatal error $myclass->myprivate (); Fatal error $myclass->foo (); /** * Definition MyClass2 */class MyClass2 extends MyClass {//public function Foo2 () { $this->mypublic (); $this->myprotected (); $this->myprivate (); Fatal error}} $myclass 2 = new MyClass2; $myclass 2->mypublic (); Can be $myclass 2->foo2 (); /** * defines bar */class Bar {public Function test () {$this->testprivate (); $this->testpublic (); } public Function Testpublic () {echo "bar::testpublic\n"; } Private Function Testprivate () {echo "bar::testprivate\n"; }} class Foo extends Bar {public Function testpublic () {echo "foo::testpublic\n"; } Private Function Testprivate () {echo "foo::testprivate\n"; }} $myFoo = new Foo (); By inheriting the public Method Bar::test () $myFoo->test (); Bar::testprivate//Foo::testpublic?>