Home  >  Article  >  Backend Development  >  Sample code sharing for oop6 visibility control in php5

Sample code sharing for oop6 visibility control in php5

黄舟
黄舟Original
2017-07-02 10:54:011145browse

Like other languages, it is also restricted by the keywords public, protected, and private:

<?php 
/** 
 * 定义MyClass 
 */ 
class MyClass 
{ 
        public $public = &#39;Public&#39;;//公有 
        protected $protected = &#39;Protected&#39;;//保护 
        private $private = &#39;Private&#39;;//私有 
 
        function printHello() 
        { 
                echo $this->public;echo "<br/>"; 
                echo $this->protected;echo "<br/>"; 
                echo $this->private;echo "<br/>"; 
        } 
} 
 
$obj = new MyClass(); 
echo $obj->public; // 可以 
//echo $obj->protected; // 致命错误 
//echo $obj->private; // 致命错误 
$obj->printHello(); // 输出 Public, Protected and Private 
 
 
/** 
 * 定义 MyClass2 
 */ 
class MyClass2 extends MyClass 
{ 
        // 对于公有和保护方法或成员,我们可以重新声明,但私有的不可以 
        protected $protected = &#39;Protected2&#39;; 
 
        //重写    
        function printHello() 
        { 
            echo "这个是MyClass2的:";echo "<br/>"; 
                echo $this->public;echo "<br/>"; 
                echo $this->protected;echo "<br/>"; 
                //echo $this->private;echo "<br/>";不能访问到父类的私有属性 
        } 
} 
 
$obj2 = new MyClass2(); 
echo $obj2->public; // 可以 
//echo $obj2->private; // 未定义 
//echo $obj2->protected; // 致命错误 
$obj2->printHello(); // 输出 Public, Protected2, Undefined 
 
?>

Of course, through these access control characters, we can also functionAchieve the same access control:

<?php 
/** 
 * 定义 MyClass 
 */ 
class MyClass 
{ 
        // 构造函数必须是public 
        public function construct() { } 
 
        // 声明一个public 的方法 
        public function MyPublic() { } 
 
        // 声明 protected 方法 
        protected function MyProtected() { } 
 
        // 声明private 方法 
        private function MyPrivate() { } 
 
        // 默认是public的 
        function Foo() 
        { 
          //类里面可以直接访问 
                $this->MyPublic(); 
                $this->MyProtected(); 
                $this->MyPrivate(); 
        } 
} 
 
$myclass = new MyClass; 
$myclass->MyPublic(); // 可以 
$myclass->MyProtected(); // 致命错误 
$myclass->MyPrivate(); //致命错误 
$myclass->Foo();    
 
 
/** 
 * 定义 MyClass2 
 */ 
class MyClass2 extends MyClass 
{ 
        //public 
        function Foo2() 
        { 
                $this->MyPublic(); 
                $this->MyProtected(); 
                $this->MyPrivate(); // 致命错误 
        } 
} 
 
$myclass2 = new MyClass2; 
$myclass2->MyPublic(); // 可以 
$myclass2->Foo2();    
 
/** 
 * 定义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(); 
 
//通过继承来的公有方法Bar::test() 
$myFoo->test(); // Bar::testPrivate    
                                      // Foo::testPublic 
?>

The above is the detailed content of Sample code sharing for oop6 visibility control in php5. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn