如何从PHP中的另一个文件替换方法值?

I have a class in fileA.php like so:

class Test {
    private foo;

    public function array() {
        $this->$foo = array ( 'a', 'b', 'c', 'd', 'e' );
        return $foo;
    }
}

I want to change the array returned by the method to:

array('x', 'y', 'z')

Not sure if this the right way to about it, but this is what I tried in fileB.php:

require_once('fileA.php');

class TestB extends Test {    
     public function array() {
        $this->$foo = array('x', 'y', 'z');
        return $foo;
     }
 }

Is it possible to make this modification? Any help will be greatly appreciated.

Thanks

$foo is a private property so you cannot access it from any child classes. Only protected and public properties can be accessed from child classes.

Since array() is a public method, you can overwrite that method and return a different array without modifying or accessing $foo.

class TestB extends Test {    
     public function array() {
        return array('x', 'y', 'z');
     }
}

But this would not affect foo for any other methods that use it.

Keep in mind, you must access class properties from within methods as $this->name (ex. $this->foo), not $foo or $this->$foo.

Rather than having a new class, you can change the class to have an initial value for $foo and then a public method which can change this value...

class Test {
    // Value with starting value, or could be set in the constructor
    private $foo = array ( 'a', 'b', 'c', 'd', 'e' );

    public function array() {
        return $this->foo;
    }

    public function setFoo ( $newArray ) {
        $this->foo = $newArray;
    }
}

$a = new Test();
print_r($a->array());
$a->setFoo(array('x', 'y', 'z'));
print_r($a->array());

gives...

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)
Array
(
    [0] => x
    [1] => y
    [2] => z
)