php:// Mock Library
, (*1)
This library is intended to be used to mock the php://
stream wrapper., (*2)
It's highly recommended that you register/unregister this ONLY when you need it in a test. Otherwise, it could interfere
with other built-in php streams during the course of it being registered., (*3)
NOTE Since version 2.0 the php://temp[/maxmemory:NN]
and php://memory
paths will behave as PHP does. The content
written to them will not be available after the stream_close
call. This means that file_put_contents
and
file_get_contents
cannot be used to read and write these two paths., (*4)
Installation
composer install syberisle/mock-php-stream
, (*5)
Usage
Using this to test a Slim 3 app's ability to do direct file uploads, where the body IS the content, is now easier., (*6)
MockPhpStream::register();
file_put_contents('php://input', 'you test data');
$app = new Slim\App();
$app->post('', function ($request) {
// direct file uploads
$request->getBody()->detach();
$from = fopen("php://input", 'r');
$to = fopen('/my/path/file', 'w');
stream_copy_to_stream($from, $to);
fclose($from);
fclose($to);
});
MockPhpStream::unregister();
Security
Using this in production could potentially cause problems as it overrides the built-in php stream functions., (*7)
Credits
The idea was based off on this blog article Mocking php://input., (*8)
License
The MIT License (MIT). Please see License File for more information., (*9)