Below is the first php example found in "Changes in PHP 5/Zend Engine
2.0 "

<?php
class MyClass {
    private $Hello = "Hello, World!\n";
    protected $Bar = "Hello, Foo!\n";
    protected $Foo = "Hello, Bar!\n";

    function printHello() {
        print "MyClass::printHello() " . $this->Hello;
        print "MyClass::printHello() " . $this->Bar;
        print "MyClass::printHello() " . $this->Foo;
    }
}

class MyClass2 extends MyClass {
    protected $Foo;

    function printHello() {
        MyClass::printHello();                          /* Should print
*/
        print "MyClass2::printHello() " . $this->Hello; /* Shouldn't
print out anything */
        print "MyClass2::printHello() " . $this->Bar;   /* Shouldn't
print (not declared)*/
        print "MyClass2::printHello() " . $this->Foo;   /* Should print
*/
    }
}

$obj = new MyClass();
print $obj->Hello;  /* Shouldn't print out anything */
print $obj->Bar;    /* Shouldn't print out anything */
print $obj->Foo;    /* Shouldn't print out anything */
$obj->printHello(); /* Should print */
?>

The result not same as stated in the remark. No print for
$obj->printHello().

It only print with the code below

$obj = new MyClass();
//print $obj->Hello;  /* Shouldn't print out anything */
//print $obj->Bar;    /* Shouldn't print out anything */
//print $obj->Foo;    /* Shouldn't print out anything */
$obj->printHello(); /* Should print */

Accessing protected variable cause the output fail, why?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to