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

ทรัพยากร (Resources) ใน PHP

นิยามและการใช้งาน

ใน PHP Resource (ทรัพยากร) เป็นชนิดข้อมูลพิเศษที่อ้างอิงถึงแหล่งข้อมูลภายนอกทุกประเภท ตัวแปรทรัพยากรทำหน้าที่เป็นการอ้างอิงถึงแหล่งข้อมูลภายนอก เช่น สตรีม (stream), ไฟล์, ฐานข้อมูล ฯลฯ PHP ใช้ฟังก์ชันที่เกี่ยวข้องเพื่อสร้างทรัพยากรเหล่านี้ ตัวอย่างเช่น ฟังก์ชัน fopen() เปิดไฟล์ดิสก์และเก็บการอ้างอิงไว้ในตัวแปรทรัพยากร

Zend Engine ของ PHP ใช้ระบบนับการอ้างอิง (reference counting) ดังนั้น ทรัพยากรที่มีจำนวนการอ้างอิงเป็นศูนย์จะถูกทำลายโดยอัตโนมัติโดย Garbage Collector จึงไม่จำเป็นต้องปล่อยหน่วยความจำที่ใช้โดยชนิดข้อมูลทรัพยากรด้วยตนเอง

สามารถจัดการทรัพยากรหลายประเภทในสคริปต์ PHP ได้ด้วยฟังก์ชันที่สอดคล้องกัน ตารางด้านล่างแสดงรายการตัวอย่าง:

ชื่อประเภททรัพยากร สร้างโดย ทำลายโดย นิยาม
bzip2bzopen()bzclose()ไฟล์ Bzip2
curlcurl_init()curl_close()เซสชัน Curl
ftpftp_connect()ftp_close()สตรีม FTP
mssql linkmssql_connect()mssql_close()ลิงก์ไปยังฐานข้อมูล Microsoft SQL Server
mysql linkmysql_connect()mysql_close()ลิงก์ไปยังฐานข้อมูล MySQL
mysql resultmysql_db_query()mysql_free_result()ผลลัพธ์ MySQL
oci8 connectionoci_connect()oci_close()การเชื่อมต่อฐานข้อมูล Oracle
ODBC linkodbc_connect()odbc_close()ลิงก์ไปยังฐานข้อมูล ODBC
pdf documentpdf_new()pdf_close()เอกสาร PDF
streamopendir()closedir()จัดการไดเรกทอรี
streamfopen(), tmpfile()fclose()จัดการไฟล์
socket-fclose()จัดการโซคเก็ต
xmlxml_parser_create()xml_parser_free()ตัวแยกวิเคราะห์ XML
zlibgzopen()gzclose()ไฟล์บีบอัด gz
zlib.deflatedeflate_init()ไม่มีบริบทการบีบอัดแบบเพิ่มเติม
zlib.inflateinflate_init()ไม่มีบริบทการถอดบีบอัดแบบเพิ่มเติม

ในบริบทนี้ PHP มีฟังก์ชัน get_resource_type() ที่คืนค่าประเภททรัพยากรของตัวแปร

รูปแบบไวยากรณ์

get_resource_type ( resource $handle ) : string

โดยที่ $handle คือตัวแปรทรัพยากรที่ต้องการทราบประเภท ฟังก์ชันนี้จะคืนค่าสตริงที่สอดคล้องกับประเภททรัพยากร

ตัวอย่างต่อไปนี้แสดงประเภททรัพยากรของไฟล์ดิสก์:

ตัวอย่าง

<?php $fp=fopen("test.txt","w"); var_dump($fp); ?>

ผลลัพธ์

จะได้ผลลัพธ์ดังนี้:

resource(5) of type (stream)

ตัวอย่างต่อไปนี้ใช้ฟังก์ชัน get_resource_type():

ตัวอย่าง

<?php $fp = fopen("test.txt", "w"); echo get_resource_type($fp) . "\n"; ?>

ผลลัพธ์

จะได้ผลลัพธ์ดังนี้:

stream