I'm in the process of writing an API that relies on (file-)streams to be passed around.
There are situations where a string instead needs to be used, and for these purposes the data: stream wrapper is used. Initially I thought it was only possible to encode the actual string in base64, which I didn't like because of the added footprint.
- <?php
-
- $string = "I should have really done some laundry tonight.";
-
- $stream = fopen('data://text/plain;base64,' . base64_encode($string),'r');
-
- echo stream_get_contents($stream);
-
- ?>
Quickly checking out the rfc, it turns out that ';base64' can be omitted to just pass along the raw data, which makes a lot more sense in the context of PHP.
Thankfully, PHP gladly supports it:
- <?php
-
- $string = "I tried, honestly!";
-
- $stream = fopen('data://text/plain,' . $string,'r');
-
- echo stream_get_contents($stream);
-
- ?>
