No good way to modify private method behavior in a testing environment
$ cat test.php
<?php
class super {
public function a() { $this->b(); }
private function b() { print "super\n"; }
}
class sub extends super {
private function b() { print "sub\n"; }
}
$obj = new sub();
$obj->a();
$ php test.php
super
The point of private methods is to prevent what other code can call them. However, in PHP, you also cannot override private methods in a subclass. This is especially important when, for example, trying to build mocks in unit tests.
The solution here is not to simply make the method php protected - this entirely changes the restrictions about how the function can be called, which is probably not what the author intended.