Как насчет добавления в вашу среду тестирования подкласса тестируемого класса, а затем использования его для манипулирования вашей статической переменной.В приведенном ниже примере я немного изменил ваш код, чтобы было проще играть со значением $ effect, а также пришлось увеличить область действия $ effect для защищенного:
<?php
class Foo{
protected static $effect = "0";
public static function doit( $arg ) {
echo 'I got: ' . $arg . ' and effect is: ' . self::$effect . '<br>';
self::$effect = "1";
}
}
class FooChild extends Foo {
public static function setEffect($newEffect) {
self::$effect = $newEffect;
}
}
Foo::doit('hello');
Foo::doit('world');
FooChild::setEffect('3');
Foo::doit('three');
Вывод такой:
Я получил: привет и эффект: 0 (первый раз показывает начальное значение)
Я получил: мир и эффект: 1 (второй раз показывает значение, увеличенное на Fooв doit ()
Я получил: три, и эффект: 3 (третий раз показывает, что подкласс смог изменить значение в родительском)