PHP เบื้องต้น > การทำงานไฟล์ และไดเรคทอรี
การเข้าถึงไดเรคทอรี
ถึงแม้ว่าจะสามารถเข้าถึงไฟล์ได้แล้ว แต่ควรจะเรียนรู้การทำงานกับไดเรคทอรีเพื่อทำให้เข้าใจระบบไฟล์ได้ดียิ่งขึ้น
การควบคุมพาร์ท
ปัญหาใหญ่ในการทำงานกับไฟล์คือ ระบบปฏิบัติการต่างกันกำหนดพาร์ทของไฟล์ต่างกัน ส่วนใหญ่คือ Windows กำหนดเป็น drive:\path\to\file และ Unix ใช้ path/to/file แต่สามารถลดความสับสนนี้ได้
ประการแรก สามารถใช้ forward slash (\) ได้ เนื่องจาก Windows เข้าใจ forward slash ดังนั้นจึงไม่จำเป็นต้องใช้ backslash ใน PHP การทำงานกับข้อความที่ใช้ backslash ต้องมีการ escape ด้วย backslash เพื่อป้องกันไม่ให้ PHP แปลความหมาย
$path1 = "c:\windows\php.ini";
$path2 = "c:\\windows\\php.ini";
$path = "c:/windows/php.ini"; // สะดวกกว่า
ประการที่ 2 สามารถใช้ฟังก์ชันของ PHP ดึงสารสนเทศพาร์ทได้
$path1 = "c:/mydata/animal/bird.txt";
echo "ชื่อไฟล์ <b>".basename($path1)."</b><br/>\n";
echo "ชื่อไดเรคทอรี <b>".dirname($path1)."</b><br/>\n";
ผลลัพธ์
ชื่อไฟล์ bird.txt
ชื่อไดเรคทอรี c:/mydata/animal
ฟังก์ชัน realpath อ่านพาร์ทสัมพัท์และส่งออกพาร์ทสัมบูรณ์ของไฟล์นั้น pathinfo แยกชื่อไดเรคทอรี, ชื่อไฟล์ และนามสกุลไฟล์ของพาร์ทที่กำหนด
$path2 = "../../images/parrot.jpg";
echo "พาร์ทจริงของ <em>$path2</em>: <b>"
. realpath($path2)."</b><br/>\n";
print_r (pathinfo($path2)); echo "<br/>\n";
print_r (pathinfo(realpath($path2)));
ผลลัพธ์
พาร์ทจริงของ ../../images/parrot.jpg: C:\AppServ\www\images\parrot.jpg
Array( [dirname] => ../../images
[basename] => parrot.jpg
[extension] => jpg )
Array( [dirname] => C:\AppServ\www\images
[basename] => parrot.jpg
[extension] => jpg )
การใช้ Class ค้นหารายละเอียดในไดเรคทอรี
ใน PHP 5 การดูรายละเอียดของไดเรคทอรีทำได้ง่ายด้วย class ชื่อ dir ซึ่งทุกอย่างเหมือน class ปกติ ยกเว้นการสร้าง ตัวอย่างคำสั่ง dirclass.php
รายการคำสั่ง 1.3.1 dirclass
<?php
$path = C:\AppServ\www\phptrain\chapter01;
$dir = dir($path);
if ($dir === FALSE)
{
echo "ไม่พบไดเรคทอรี $path<br/>";
exit;
echo "</body>";
echo "</html>";
}
while (($entry = @$dir->read()) !== FALSE)
{
echo $entry."<br/>";
}
?> |
หมายเหตุ การสร้าง dir class ไม่ต้องใช้คีย์เวิร์ด new
$dir -> read() ส่งออกค่าเป็น Boolean
การย้อนกลับไปจุดเริ่มต้นของ dir class เรียกเมธอด rewind
$dir ->rewind();
การปิดใช้เมธอด close
$dir ->close();
การใช้ฟังก์ชันค้นหารายละเอียดในไดเรคทอรี
คำสั่งของ PHP ที่ทำงานกับไดเรคทอรียังคงใช้วิธี procedure ที่ประกอบด้วยกลุ่มฟังก์ชัน
<?php
$path = "C:\AppServ\www\phptrain\chapter01";
$dir = opendir($path);
if ($dir === FALSE)
{
echo "ไม่พบไดเรคทอรี $path<br/>";
echo "</body>";
echo "</html>";
exit;
}
while (($entry = @$readdir()) !== FALSE)
echo $entry."<br/>";
?>
การให้พอยต์เตอร์ย้อนกลับไปจุดเริ่มต้น เรียกฟังก์ชัน rewinddir
rewinddir($dir);
การปิดใช้ฟังก์ชัน closedir
closedir($dir);
การเปลี่ยนไดเรคทอรีปัจจุบัน
การเปลี่ยนไดเรคทอรีปัจจุบันใช้ฟังก์ชัน chdir()
$result = @chdir("../logs");
if ($result === FALSE)
echo "ไม่พบไดเรคทอรี ../logs";
// เปลี่ยนไดเรคทอรีเรียบร้อยแล้ว
การสร้างและลบไดเรคทอรี
PHP มีฟังก์ชันสร้างไดเรคทอรีและลบไดเรคทอรี และสามารถทำได้ในพารท์ที่สคริปต์ของผู้ใช้เรียกใช้ในฐานะการเข้าถึง
การใช้ mkdir () มีความซับซ้อน ต้องใช้ 2 พารามิเตอร์สำหรับพาร์ทที่ไดเรคทอรีต้องการ (รวมกับชื่อไดเรคทอรีใหม่) และสิทธิบนไดเรคทอรี ตัวอย่างเช่น
mkdir ("/tmp/testing", 0777);
ฟังก์ชัน rmdir () ใช้ลบไดเรคทอรี
rmdir ("/tmp/tosting");
หรือ
rmdir ("C:\\tmp\\testing");
ไดเรคทอรีที่กำลังลบต้องว่างเปล่า
|