note 40998 deleted from language.oop by aidan
| From: | aidan@php.net | Date: | Sat, 03 Jul 2004 14:48:15 +0000 |
| Subject: | note 40998 deleted from language.oop by aidan | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-72434@lists.php.net to get a copy of this message | ||
Note Submitter: danielc@php.net
----
PHP 5 has introduced access control for object properties and methods. Here is a demonstration of
how the access levels work.
class a {
public function pub($from) {
echo "pub from $from\n";
}
protected function pro($from) {
echo "pro from $from\n";
}
private function pvt($from) {
echo "pvt from $from\n";
}
public function testa($from) {
echo "vvvv\n";
echo "testa from $from...\n";
$this->pub("testa via $from");
$this->pro("testa via $from");
$this->pvt("testa via $from");
echo "^^^^\n";
}
}
class b extends a {
public function testb($from) {
echo "v-v-v-v\n";
echo "testb from $from...\n";
$this->pub("testb via $from");
$this->pro("testb via $from");
// $this->pvt("testb via $from"); // Fatal error...
$this->testa("testb via $from");
echo "^-^-^-^\n";
}
}
$a = new a;
$a->pub('direct');
// $a->pro('direct'); // Fatal error...
// $a->pvt('direct'); // Fatal error...
$a->testa('direct');
$b = new b;
$b->testb('direct');
/*
* OUTPUT
*
* pub from direct
* vvvv
* testa from direct...
* pub from testa via direct
* pro from testa via direct
* pvt from testa via direct
* ^^^^
* v-v-v-v
* testb from direct...
* pub from testb via direct
* pro from testb via direct
* vvvv
* testa from testb via direct...
* pub from testa via testb via direct
* pro from testa via testb via direct
* pvt from testa via testb via direct
* ^^^^
* ^-^-^-^
*/