I am aware of Advanced PHP debugger but what I need this type of
functionality for is mocking and testing.

As an example I want to use PHPUnit mocking feature to create a mock of a
class. However in the constructor of this class is the following line to
get the expected JSON string:

$result = file_get_contents('php://input');

I can not override the file_get_contents() function. The work around is to
monkey patch the class as a mock and override the constructor (copying ALL
logic from the constructor to the mock allowing for $result to be taken
from the constructor's argument list).

This is awkward and in my use case the constructor also makes calls to
static methods in other objects which the latest version of PHPUnit does
not allow you to mock static methods.

ADP is not acceptable to override functions in that it requires a binary to
be installed and php.ini to be configured as well as no support for this in
Windows.

Is there an RFC that I didn't find that allows for easily overriding
built-in functions? For example:

@function file_get_contents($string)
{
    return 'mock string';
}

My C skills are quite rusty and understanding the Zend engine is a daunting
task or I'd create an RFC myself. The devil is in the details. The real
question I am asking is HOW DIFFICULT would something like this be to code
and include in the PHP core?

Reply via email to