RE: [PHP] extended class question

2004-09-13 Thread Ed Lazor
> 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.
> 

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



Re: [PHP] extended class question

2004-09-13 Thread Rick Fletcher
Ed Lazor wrote:
How come the output to this script is "World Trade Center" instead of "Pizza
Delivery"?
Thanks,
Ed


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() . "";
?>
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


Re: [PHP] extended class question

2004-09-13 Thread Curt Zirzow
* Thus wrote Ed Lazor:
> How come the output to this script is "World Trade Center" instead of "Pizza
> Delivery"?
> 
> Thanks,
> 
> Ed
> 
> 
> 
>  
> class test {
>   private $var1;

defines 'test' class to only have access.

>   
>   function __construct() {
>   $this->var1 = "World Trade Center";
>   }
>   
>   function get_var1() {
>   return $this->var1;

accesses the private $var1

>   }
>   
>   function set_var1($data) {
>   $this->var1 = $data;
>   }
> }
> 
> class testing extends test {
>   function __construct() {
>   parent::__construct();
>   $this->var1 = "Pizza Delivery";

This creates a publicly accessable member for the *testing* class.

>   }
> }
> 
> 
> $test2 = new testing();
> print "var1 = " . $test2->get_var1() . "";

If you wish for it to change within testing class, declare the
member as a protected var in the test class.

class test {
  protected $var1; /* allows access to extending classes */
}

See also:
 http://php.net/oop5.visibility


Curt
-- 
The above comments may offend you. flame at will.

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



[PHP] extended class question

2004-09-13 Thread Ed Lazor
How come the output to this script is "World Trade Center" instead of "Pizza
Delivery"?

Thanks,

Ed



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() . "";

?>

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