Как заменить значение метода из другого файла в PHP? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть класс в fileA.php примерно так:

class Test {
    private foo;

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

Я хочу изменить массив, возвращаемый методом, на:

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

Не уверен, что это правильный путь, но это то, что я попробовал в fileB.php:

require_once('fileA.php');

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

Возможно ли сделать эту модификацию? Любая помощь будет оценена.

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вместо того, чтобы иметь новый класс, вы можете изменить класс на начальное значение для $foo, а затем публичный метод, который может изменить это значение ...

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

дает ...

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)
Array
(
    [0] => x
    [1] => y
    [2] => z
)
0 голосов
/ 03 июля 2018

$ foo является частной собственностью, поэтому вы не можете получить к ней доступ ни из каких дочерних классов. Только защищенные и общедоступные свойства могут быть доступны из дочерних классов.

Поскольку array () является публичным методом, вы можете перезаписать этот метод и вернуть другой массив без изменения или доступа к $foo.

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

Но это не повлияет на foo для любых других методов, которые его используют.

Имейте в виду, вы должны обращаться к свойствам класса из методов как $this->name (например, $this->foo), а не $ foo или $ this -> $ foo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...