Задать вопрос

Как обратится к статическому приватном методу класса?

Вопрос в заголовке - мне нужно использовать приватный метод класса.

Сразу хочу внести ясность:
Не надо советов поменять класс - я не могу изменять ядро фреймворка.
Не надо говорить, что раз метод приватный он не должен вызываться из вне - я не виноват что создатели идиоты.
Мне нужен простой ответ - есть ли какие-то трюки которые позволят вызвать приватный статический метод?

Например я могу написать свой класс-обертку расширяющую целевой класс, но что дальше? Приватный метод родителя нельзя вызывать из дочерних классов.
  • Вопрос задан
  • 183 просмотра
Подписаться 4 Средний 1 комментарий
Решения вопроса 2
@Nc_Soft
Это либо мощь, либо проклятье php, но в нем если нельзя, но очень хочется, то можно
<?php

class PrivateClass
{
    private function privateMethod()
    {
        return 'никогда так не делайте';
    }
}
$object = new PrivateClass();
$reflector = new ReflectionObject($object);
$method = $reflector->getMethod('privateMethod');
$method->setAccessible(true);
echo $method->invoke($object);
Ответ написан
DevMan
@DevMan
class Test {
	private static function run() {
		echo __METHOD__;
	}
}

$method = new ReflectionMethod('Test', 'run');
$method->setAccessible(true);
$method->invoke(new Test);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@artsiom1976
Выполнить приватный метод родителя в публичном либо защищённом методе родителя и уже его вызвать в наследнике :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы