diff --git a/language/oop5/visibility.xml b/language/oop5/visibility.xml index 3819a102be..8ebf24f0a7 100644 --- a/language/oop5/visibility.xml +++ b/language/oop5/visibility.xml @@ -1,5 +1,5 @@ - + Visibility @@ -14,62 +14,63 @@ Class members must be defined with public, private, or protected. + Member declaration private; - print "MyClass::printHello() " . $this->protected; - print "MyClass::printHello() " . $this->protected2; - } -} - -class MyClass2 extends MyClass { - protected $protected = "MyClass2::protected!\n"; - - function printHello() { - - MyClass::printHello(); - - print "MyClass2::printHello() " . $this->public; - print "MyClass2::printHello() " . $this->protected; - print "MyClass2::printHello() " . $this->protected2; - - /* Will result in a Fatal Error: */ - //print "MyClass2::printHello() " . $this->private; /* Fatal Error */ - - } + function printHello() + { + echo $this->public; + echo $this->protected; + echo $this->private; + } } $obj = new MyClass(); +echo $obj->public; // Works +echo $obj->protected; // Fatal Error +echo $obj->private; // Fatal Error +$obj->printHello(); // Shows Public, Protected and Private -print "Main:: " . $obj->public; -//print $obj->private; /* Fatal Error */ -//print $obj->protected; /* Fatal Error */ -//print $obj->protected2; /* Fatal Error */ -$obj->printHello(); /* Should print */ +/** + * Define MyClass2 + */ +class MyClass2 extends MyClass +{ + // We can redeclare the public and protected method, but not private + protected $protected = 'Protected2'; + + function printHello() + { + echo $this->public; + echo $this->protected; + echo $this->private; + } +} $obj2 = new MyClass2(); -print "Main:: " . $obj2->private; /* Undefined */ +echo $obj->public; // Works +echo $obj2->private; // Undefined +echo $obj2->protected; // Fatal Error +$obj2->printHello(); // Shows Public, Protected2, not Private -//print $obj2->protected; /* Fatal Error */ -//print $obj2->protected2; /* Fatal Error */ - -$obj2->printHello(); ?> ]]> + The use PHP 4 use of declaring a variable with the keyword 'var' is @@ -82,11 +83,71 @@ $obj2->printHello(); Method Visibility - . + Class methods must be defined with public, private, or protected. Methods + without any declaration are defined as public. + + + + Method Declaration + +public(); + $this->protected(); + $this->private(); + } +} + +$myclass = new MyClass; +$myclass->MyPublic(); // Works +$myclass->MyProtected(); // Fatal Error +$myclass->MyPrivate(); // Fatal Error +$myclass->Foo(); // Public, Protected and Private work + + +/** + * Define MyClass2 + */ +class MyClass2 extends MyClass +{ + // This is public + Foo2() + { + $this->public(); + $this->protected(); + $this->private(); + } +} + +$myclass2 = new MyClass2; +$myclass2->MyPublic(); // Works +$myclass2->Foo2(); // Public and Protected work, not Private +?> +]]> + + - -