Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP php:// Wrapper

บทนำ

Wrapper php:// เปิดใช้งานการเข้าถึงสตรีม I/O ต่างๆ รวมถึง standard input, output และ error streams สตรีมในหน่วยความจำ (in-memory), สตรีมที่เก็บบนดิสก์ และ filtered streams ก็เข้าถึงได้ด้วยโปรโตคอล php://

Standard streams

php://stdin, php://stdout และ php://stderr อนุญาตการเข้าถึงโดยตรง standard input stream device, standard output stream และ error stream ของกระบวนการ PHP ตามลำดับ ค่าคงที่ที่กำหนดไว้ล่วงหน้า STDIN, STDOUT และ STDERR แทนสตรีมเหล่านี้ตามลำดับ

php://input

php://input อนุญาตการเข้าถึงแบบอ่านอย่างเดียว (read-only) ข้อมูลดิบ (raw data) ใน HTTP request body โปรดทราบว่าข้อมูลเดียวกันนี้มีอยู่ในตัวแปร $HTTP_POST_RAW_DATA (ซึ่งถูก deprecated แล้ว) อย่างไรก็ตาม php://input ไม่พร้อมใช้งานเมื่อ enctype attribute ถูกตั้งเป็น multipart/form-data

php://output

Wrapper นี้เป็น write-only stream อนุญาตกลไก buffer คล้ายกับคำสั่ง print และ echo

php://fd

File descriptor เข้าถึงได้ผ่าน wrapper นี้ สตรีมมาตรฐาน STDIN, STDOUT และ STDERR ถูกกำหนด file descriptor 0, 1 และ 2 (ไม่ใช่ 1,2,3 ตามต้นฉบับ) สตรีมอื่นๆ จะได้รับ file descriptor ที่เพิ่มขึ้นทีละ 1 ดังนั้น php://fd/3 หมายถึง file descriptor 3

php://memory

เป็น read/write stream อนุญาตให้เก็บข้อมูลชั่วคราวในหน่วยความจำ Wrapper php://temp คล้ายกัน แต่ในกรณีนี้ข้อมูลจะถูกเก็บในไฟล์ชั่วคราวแทนหน่วยความจำ

php://filter

Wrapper นี้อนุญาตให้ใช้ filter กับสตรีมเมื่อเปิดมัน Filters มีประโยชน์โดยเฉพาะกับฟังก์ชัน 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 stream wrapper อนุญาตให้ดึงข้อมูลดิบจาก HTTP request ในตัวอย่างต่อไปนี้ HTML form ส่งข้อมูลไปยัง PHP script ด้วยเมธอด POST

<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>

PHP script สำหรับดึงข้อมูล HTTP ดิบ มีดังนี้

<?php $json = file_get_contents("php://input"); $data = json_decode($json); print_r($json); ?>