您好,欢迎访问一九零五行业门户网

php: 关于访问控制(可见性)的示例代码分享

php代码
<?php /** * define myclass */ class myclass { public $public = 'public'; protected $protected = 'protected'; private $private = 'private'; function printhello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new myclass(); echo $obj->public; // 这行能被正常执行 echo $obj->protected; // 这行会产生一个致命错误 echo $obj->private; // 这行也会产生一个致命错误 $obj->printhello(); // 输出 public、protected 和 private /** * define myclass2 */ class myclass2 extends myclass { // 可以对 public 和 protected 进行重定义,但 private 而不能 protected $protected = 'protected2'; function printhello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj2 = new myclass2(); echo $obj2->public; // 这行能被正常执行 echo $obj2->private; // 未定义 private echo $obj2->protected; // 这行会产生一个致命错误 $obj2->printhello(); // 输出 public、protected2 和 undefined ?>
php代码
<?php /** * define myclass */ class myclass { // 声明一个公有的构造函数 public function construct() { } // 声明一个公有的方法 public function mypublic() { } // 声明一个受保护的方法 protected function myprotected() { } // 声明一个私有的方法 private function myprivate() { } // 此方法为公有 function foo() { $this->mypublic(); $this->myprotected(); $this->myprivate(); } } $myclass = new myclass; $myclass->mypublic(); // 这行能被正常执行 $myclass->myprotected(); // 这行会产生一个致命错误 $myclass->myprivate(); // 这行会产生一个致命错误 $myclass->foo(); // 公有,受保护,私有都可以执行 /** * define myclass2 */ class myclass2 extends myclass { // 此方法为公有 function foo2() { $this->mypublic(); $this->myprotected(); $this->myprivate(); // 这行会产生一个致命错误 } } $myclass2 = new myclass2; $myclass2->mypublic(); // 这行能被正常执行 $myclass2->foo2(); // 公有的和受保护的都可执行,但私有的不行 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(); $myfoo->test(); // bar::testprivate // foo::testpublic ?>
<?php class test { private $foo; public function construct($foo) { $this->foo = $foo; } private function bar() { echo 'accessed the private method.'; } public function baz(test $other) { // we can change the private property: $other->foo = 'hello'; var_dump($other->foo); // we can also call the private method: $other->bar(); } } $test = new test('test'); $test->baz(new test('other')); ?>
以上例程会输出:
string(5) hello
accessed the private method.
以上就是php: 关于访问控制(可见性)的示例代码分享的详细内容。
其它类似信息

推荐信息