<?PHP
CLASS SOURCETRANSFORMINGLOADER EXTENDS PHP_USER_FILTER
{
/**
* PHP FILTER DEFINITION
*/
CONST PHP_FILTER_READ = 'PHP://FILTER/READ=';
/**
* DEFAULT PHP FILTER NAME FOR REGISTRATION
*/
CONST FILTER_IDENTIFIER = 'GO.SOURCE.TRANSFORMING.LOADER';
/**
* STRING BUFFER
*
* @VAR STRING
*/
PROTECTED $DATA = '';
/**
* IDENTIFIER OF FILTER
*
* @VAR STRING
*/
PROTECTED STATIC $FILTERID;
/**
* REGISTER CURRENT LOADER AS STREAM FILTER IN PHP
*
* @PARAM STRING $FILTERID IDENTIFIER FOR THE FILTER
* @THROWS \RUNTIMEEXCEPTION IF REGISTRATION WAS FAILED
*/
PUBLIC STATIC FUNCTION REGISTER($FILTERID = SELF::FILTER_IDENTIFIER)
{
IF (!EMPTY(SELF::$FILTERID)) {
THROW NEW RUNTIMEEXCEPTION('STREAM FILTER ALREADY REGISTERED');
}
$RESULT = STREAM_FILTER_REGISTER($FILTERID, __CLASS__);
IF (!$RESULT) {
THROW NEW RUNTIMEEXCEPTION('STREAM FILTER WAS NOT REGISTERED');
}
SELF::$FILTERID = $FILTERID;
}
/**
* {@INHERITDOC}
*/
PUBLIC FUNCTION FILTER($IN, $OUT, &$CONSUMED, $CLOSING)
{
WHILE ($BUCKET = STREAM_BUCKET_MAKE_WRITEABLE($IN)) {
$THIS->DATA .= $BUCKET->DATA;
}
IF ($CLOSING || FEOF($THIS->STREAM)) {
$CONSUMED = STRLEN($THIS->DATA);
$BUCKET = STREAM_BUCKET_NEW($THIS->STREAM, STRTOUPPER($THIS->DATA));
STREAM_BUCKET_APPEND($OUT, $BUCKET);
RETURN PSFS_PASS_ON;
}
RETURN PSFS_FEED_ME;
}
}
SOURCETRANSFORMINGLOADER::REGISTER();
REGISTER_SHUTDOWN_FUNCTION(FUNCTION () {
ECHO FILE_GET_CONTENTS('PHP://FILTER/READ=GO.SOURCE.TRANSFORMING.LOADER/RESOURCE=' . __FILE__);
});
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /in/eu4jC on line 74
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_FUNCTION, expecting ')' in /in/eu4jC on line 74
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/eu4jC on line 8
Process exited with code 255.
Parse error: parse error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/eu4jC on line 8
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/eu4jC on line 8
Process exited with code 255.