परिचय
php:// रैपर विभिन्न I/O स्ट्रीम तक पहुंच सक्षम करता है। इसमें मानक इनपुट, आउटपुट और एरर स्ट्रीम शामिल हैं। इन-मेमोरी, डिस्क-बैक्ड और फ़िल्टर्ड स्ट्रीम भी php:// प्रोटोकॉल के साथ एक्सेस किए जाते हैं।
मानक स्ट्रीम
php://stdin, php://stdout और php://stderr क्रमशः PHP प्रक्रिया के लिए मानक इनपुट स्ट्रीम डिवाइस, मानक आउटपुट स्ट्रीम और एरर स्ट्रीम तक सीधी पहुंच की अनुमति देते हैं। पूर्वनिर्धारित स्थिरांक STDIN, STDOUT और STDERR क्रमशः इन स्ट्रीम को दर्शाते हैं।
php://input
php://input HTTP अनुरोध बॉडी में मौजूद रॉ डेटा तक रीड-ओनली एक्सेस की अनुमति देता है। ध्यान दें कि वही डेटा $HTTP_POST_RAW_DATA वेरिएबल में उपलब्ध है (जो अब डिप्रिकेटेड है)। हालांकि, php://input तब उपलब्ध नहीं होता जब enctype एट्रिब्यूट multipart/form-data पर सेट हो।
php://output
यह रैपर राइट-ओनली स्ट्रीम को दर्शाता है, जो बफर मैकेनिज्म की अनुमति देता है, print और echo स्टेटमेंट के समान।
php://fd
एक फ़ाइल डिस्क्रिप्टर इस रैपर के माध्यम से एक्सेसिबल है। मानक स्ट्रीम STDIN, STDOUT और STDERR को फ़ाइल डिस्क्रिप्टर 0, 1, और 2 असाइन किए जाते हैं। हर दूसरी स्ट्रीम को बढ़ता हुआ फ़ाइल डिस्क्रिप्टर असाइन किया जाता है। इसलिए php://fd/3 फ़ाइल डिस्क्रिप्टर 3 को संदर्भित करता है।
php://memory
यह एक रीड/राइट स्ट्रीम है जो डेटा को अस्थायी रूप से मेमोरी में संग्रहीत करने की अनुमति देता है। php://temp रैपर समान है। हालांकि, बाद के मामले में, डेटा मेमोरी के बजाय एक अस्थायी फ़ाइल में संग्रहीत होता है।
php://filter
यह रैपर स्ट्रीम खोले जाने पर उस पर फ़िल्टर लागू करने की अनुमति देता है। फ़िल्टर विशेष रूप से readfile(), file_get_contents() और file() फ़ंक्शन के साथ उपयोगी होते हैं।
उदाहरण
निम्न उदाहरण में, कंसोल इनपुट php://stdin से पढ़ा जाता है और आउटपुट php://stdout के साथ प्रदर्शित होता है:
<?php
$file = fopen("php://stdin", "r");
$x = fread($file, 10);
echo $x;
$out = fopen("php://stdout", "w");
fwrite($out, $x);
fclose($file);
?>
php://input स्ट्रीम रैपर HTTP अनुरोध से रॉ डेटा लाने की अनुमति देता है। निम्न उदाहरण में, HTML फॉर्म POST मेथड के साथ एक PHP स्क्रिप्ट को डेटा पोस्ट करता है:
<html> <body>
<form action="testscript.php" method="POST">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="submit">
</form>
</body> </html>
रॉ HTTP डेटा प्राप्त करने के लिए PHP स्क्रिप्ट निम्नानुसार है:
<?php
$json = file_get_contents("php://input");
$data = json_decode($json);
print_r($json);
?>
नोट: php://input JSON API के लिए आदर्श है जहां कंटेंट-टाइप application/json होता है।