PHP: Как получить частную собственность родительского абстрактного класса из дочернего класса с отражениями или другим способом - PullRequest
1 голос
/ 23 апреля 2020

У меня такая ситуация.

Итак, у нас есть абстрактное father, которое имеет свойство $secret.

abstract class father{
    private $secret = 'my_secret';
}

, а также имеет дочерний класс

class child extends father{
    public function getFatherSecret(){
        // some code to get a private prop
    }
}

Я не знаю, может быть, это невозможно.

Поэтому мне нужно получить родительское приватное свойство, такое как Закрывающая привязка метод или метод десериализации, который уже полностью объяснено в некоторых документах PHP.

1 Ответ

2 голосов
/ 23 апреля 2020

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

Итак .. .

abstract class father{
    private $secret = 'my_secret';
}

class child extends father{
    public function getFatherSecret(){
        $closure = Closure::bind(function (father $f) { return $f->secret; }, 
            null, "father");

        print_r($closure($this));
    }
}

$c = new child();
$c->getFatherSecret();

дает ...

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