Curt Zirzow wrote --- napísal::
* Thus wrote Marek Kilimajer:

Chris wrote --- nap?sal::

if anyone can, would you please explain why the below code does what it does? I would expect $this->test in TestInstance to refer to the inherited $test from Test. Using php5RC3. Thanks.

<?php
abstract class Test {
  private $test;
  abstract public function addToTest($i);
}

class TestInstance extends Test {
  public function __construct() {
      $this->test = 0;
  }

...

The variable is private for Test, so TestInstance does not have access to it. By assigning 0 to $this->test in the constructor of TestInstance, you create a new property of TestInstance that is public (the default).

var_dump() shows it clearly:
object(TestInstance)#1 (2) {
 ["test:private"]=> NULL   <---- belongs to Test
 ["test"]=> int(3)         <---- belongs to TestInstance
}


I think one could argue that that test:private shouldn't even be
there. To me that test:private would imply that is TestIntance's
private variable.



Right, ["Test::test:private"] would be better

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



Reply via email to