Вызов статической функции из экземпляра

Я пытаюсь вызвать статическую магическую функцию ( __ callStatic ) из члена его дочернего класса. Проблема быть, она переходит к нестатическому __ вызову .

<?php

ini_set("display_errors", true);

class a
{
    function __call($method, $params)
    {
        echo "instance";
    }

    static function __callStatic($method, $params)
    {
        echo "static";
    }
}

class b extends a
{
    function foo()
    {
        echo static::bar();
        // === echo self::bar();
        // === echo a::bar();
        // === echo b::bar();
    }
}

$b = new b();
echo phpversion()."<br />";
$b->foo();

?>

Вывод:

5.3.6
instance

Как сделать его «статичным»?

-121--1873302- Как отключить защиту Glibc во время выполнения? Я пытаюсь узнать об уязвимостях кода и тестирую некоторые простые программы, которые я написал. Однако многие проблемы Glibc улавливают во время выполнения (например, Stack-Smashing, Double Free и т.д.). Таким образом...

Я пытаюсь узнать об уязвимостях кода и тестирую некоторые простые программы, которые я написал. Однако многие проблемы Glibc улавливают во время выполнения (например, Stack-Smashing, Double Free и т.д.). Таким образом, я хотел бы иметь возможность запускать свои программы без ошибок определения времени выполнения Glibc. Есть ли способ отключить обнаружение Глибка? (как с флагом компилятора и т. д.).

Я видел в предыдущей ссылке описано, как отключить ASLR и канареек, но это не то, что я хотел бы сделать, так как он все еще останавливает ошибки, как Double Free и некоторые другие кучные ошибки я хочу попробовать (http://stackoverflow.com/questions/2340259/how-to-turn-off-gcc-compiler-optimization-to-enable-buffer-overflow).

Я также знаю, что вы можете отключить предупреждения о времени компиляции с флагами -w, но это не кажется тем, чего я хочу. Я пробовал читать флаги GCC и искать информацию о Glibc, но я еще никуда не попал. Поэтому я был бы очень признателен за любую помощь. Спасибо.

12
задан Billy 19 July 2011 в 16:44
поделиться