Re: extended class question

From: Date: Mon, 13 Sep 2004 23:09:06 +0000
Subject: Re: extended class question
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-196580@lists.php.net to get a copy of this message
Ed Lazor wrote:
How come the output to this script is "World Trade Center" instead of "Pizza Delivery"? Thanks, Ed ---------------------------------------------------------------- <?php class test { private $var1; function __construct() { $this->var1 = "World Trade Center"; } function get_var1() { return $this->var1; } function set_var1($data) { $this->var1 = $data; } } class testing extends test { function __construct() { parent::__construct(); $this->var1 = "Pizza Delivery"; } } $test2 = new testing(); print "var1 = " . $test2->get_var1() . "<br>"; ?>
Because test's var1 is private. test->var1 isn't accessible by class testing, so the assignment you're doing in testing's constructor is assigning "Pizza Delivery" to testing->var1 instead. When you call $test2->get_var1() you're calling the parent's get_var1() method, which prints out the parent's var1 property. (which hasn't been touched.) Change test's var1 to protected and it'll work. --rick

« previous php.general (#196580) next »