คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


File Helper

ไฟล์ File Helper มีฟังก์ชันช่วยเหลือที่ทำงานกับไฟล์

เรียกใช้งานผู้ช่วยนี้

ผู้ช่วยนี้จะถูกเรียกใช้งานได้จากโค้ดต่อไปนี้

$this->load->helper('file');

มีฟังก์ชันที่ใช้งานได้ดังนี้

read_file('path')

คืนข้อมูลที่อยู่ในไฟล์ในตำแหน่งที่กำหนดให้ ตัวอย่างเช่น

$string = read_file('./path/to/file.php');

โดยตำแหน่งเส้นทางนั้นสามารถเป็นแบบความสัมพันธ์หรือเส้นทางแบบเต็มเซิร์ฟเวอร์ได้ โดยคืนค่า FALSE (ตรรกะ) ถ้าเกิดข้อผิดพลาด

ข้อสังเกตุ: ตำแหน่งเส้นทางแบบสัมพันธ์ จะสัมพันธ์กับไฟล์ไซต์ index.php หลักของไดเรคทอรี่ ไม่ใช่ตัวควบคุม(controller) หรือส่วนแสดง(view) CodeIgniter ใช้ตัวควบคุมด้านหน้า ดังนั้นเส้นทางจะสัมพันธ์กับ index เสมอ

ถ้าเซิร์ฟเวอร์ของคุณเปิดข้อจำกัด open_basedir ฟังก์ชันนี้อาจจะไม่ทำงานถ้าคุณพยายามจะเรียกไฟล์สคริปด้านบนนี้

write_file('path', $data)

เขียนข้อมูลลงไปในเส้นทางที่กำหนด ถ้าไม่มีไฟล์อยู่จะสร้างขึ้นให้ ตัวอย่างเช่น

$data = 'Some file data';

if ( ! write_file('./path/to/file.php', $data))
{
     echo 'Unable to write the file';
}
else
{
     echo 'File written!';
}

คุณสามารถตั้งค่าการเขียนได้จากพารามิเตอร์ที่สาม

write_file('./path/to/file.php', $data, 'r+');

โหมดโดยปกติคือ wb กรุณาดูคู่มือการใช้งาน PHP สำหรับโหมดต่างๆ

ข้อสังเกตุ: ในการใช้ฟังก์ชันนี้เขียนข้อมูลไปยังไฟล์ ไฟล์นั้นจะต้องตั้งค่าความยินยอม(permission) ให้ถูกเขียนได้ (666, 777, ฯลฯ) ถ้ายังไม่มีไฟล์ ไดเรคทอรี่จะต้องสามารถถูกเขียนได้ (ถึงจะสร้างไฟล์ใหม่ให้ได้)

ข้อสังเกตุ: ตำแหน่งเส้นทางแบบสัมพันธ์ จะสัมพันธ์กับไฟล์ไซต์ index.php หลักของไดเรคทอรี่ ไม่ใช่ตัวควบคุม(controller) หรือส่วนแสดง(view) CodeIgniter ใช้ตัวควบคุมด้านหน้า ดังนั้นเส้นทางจะสัมพันธ์กับ index เสมอ

delete_files('path')

ลบไฟล์ทั้งหมดที่อยู่ในไดเรคทอรี่ที่กำหนด ตัวอย่างเช่น

delete_files('./path/to/directory/');

ถ้าพารามิเตอร์ที่สองถูกตั้งเป็น true ไดเรคทอรี่ใดๆที่อยู่ภายในไดเรคทอรี่ที่กำหนด จะถูกลบไปด้วยตัวอย่างเช่น

delete_files('./path/to/directory/', TRUE);

ข้อสังเกตุ: ไฟล์เหล่านั้นจะต้องถูกเขียนได้หรือมีสิทธิจากระบบในการที่จะลบไฟล์

get_filenames('path/to/directory/')

นำเส้นทางแบบเซิร์ฟเวอร์มาเป็นค่านำเข้าและคืนค่าอาเรย์ที่มีชื่อไฟล์ทั้งหมดในไดเรคทอรี่นั้น เส้นทางไฟล์นั้นสามารถถูกเพิ่มไปในชื่อไฟล์ที่ส่งกลับมาได้โดยเปลี่ยนค่าที่สองเป็น TRUE

get_dir_file_info('path/to/directory/')

อ่านไดเรคทอรี่ที่กำหนดและสร้างอาเรย์ที่ประกอบด้วยชื่อไฟล์ , ขนาดไฟล์, วันเวลา, และความยินยอม(permission) โฟลเดอร์ย่อยที่อยู่ในนั้นจะถูกอ่านมาด้วยเช่นกัน

get_file_info('path/to/file', $file_information)

ใส่ตำแหน่งไฟล์ โดยคืนค่าเป็น ชื่อ, ตำแหน่งเส้นทาง, ขนาด, วันเวลที่เกิดการเปลี่ยนแปลง โดยพารามิเตอร์ที่สองยอมให้คุณประกาศแน่ชัดว่าต้องการข้อมูลไหนที่จะถูกส่งกลับไป มีทางเลือกดังนี้ name(ชื่อ), server_path(เส้นทางบนเซิร์ฟเวอร์), size(ขนาด), date(วันเวลา), readable(เขียนได้ไหม), writable(อ่านได้ไหม), executable(ดำเนินการได้ไหม), fileperms(ค่ายินยอม) คืนค่าเป็น FALSE ถ้าไม่พบไฟล์

ข้อสังเกตุ: แบบ "writable" ใช้ฟังก์ชันของ PHP คือ is_writable() ซึ่งมีปัญหาบนเว็บเซิร์ฟเวอร์แบบ IIS โดยคุณอาจจะพิจารณาใช้ fileperms แทนซึ่งส่งข้อมูลกลับมาจากฟังก์ชัน PHP ที่ชื่อ fileperms()

get_mime_by_extension('file')

แปลงนามสกุลไฟล์ ไปอยู่ในแบบ mime type โดยอิงจาก config/mimes.php คืนค่า FALSE ถ้ามันไม่สามารถระบุประเภทหรือเปิดไฟล์ mime ไม่ได้

$file = "somefile.png";
echo $file . ' is has a mime type of ' . get_mime_by_extension($file);

ข้อสังเกตุ: นี้ไม่ใช่ทางที่ถูกต้องว่าไฟล์จะเป็น mime type แบบใดแต่มันเป็นความสะดวก มันไม่ควรถูกใช้ในเรื่องความปลอดภัย

symbolic_permissions($perms)

นำค่ายินยอมแบบตัวเลข (อย่างเช่นค่าที่คืนมาจาก fileperms() ) และคืนค่าเป็นเครื่องหมายแบบมาตรฐานของค่ายินยอมไฟล์แทน

echo symbolic_permissions(fileperms('./index.php'));

// -rw-r--r--

octal_permissions($perms)

นำค่าตัวเลขของค่ายินยอม (อย่างเช่นค่าที่คืนมาจาก fileperms() ) และคืนค่าเป็นตัวอักษรฐาน 8 เป็นจำนวน 3 ตัวสำหรับค่ายินยอม

echo octal_permissions(fileperms('./index.php'));

// 644