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
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php