Я пытаюсь вызвать статическую магическую функцию ( __ 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 улавливают во время выполнения (например, 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, но я еще никуда не попал. Поэтому я был бы очень признателен за любую помощь. Спасибо.