Giới thiệu về File helper trên CodeIgniter

Việc xử lý đến file trong hệ thống là không thể tránh khỏi. CodeIgniter đưa ra cho chúng ta một công cụ rất hữu dụng là File helper. Trong bài này mình sẽ trình bày về File helper trên CodeIgniter.

File helper trên CodeIgniter đưa ra cho chúng ta rất nhiều phương thức để xử lý các vấn đề liên quan tới xử lý file. Chúng ta sẽ đi qua từng phương thức này để biết cách sử dụng chúng.

1. Tải File helper lên hệ thống.

Để sử dụng được File helper của CodeIgniter, các bạn sẽ gọi hàm load để gọi helper này lên.

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

2. Các phương thức của File helper.

a. Hàm read_file('path/to/a/file').

Hàm này trả về dữ liệu được lưu trữ trong một file nào đó. Ví dụ:

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

Đường dẫn tới file 'path/to/a/file' có thể là đường dẫn tương đối hoặc tuyệt đối.

Hàm sẽ trả về FALSE nếu có lỗi.

b. Hàm write_file('path/to/a/file', $data).

Hàm này ghi dữ liệu vào một file cụ thể. Nếu file không tồn tại thì hàm sẽ tự tạo một file và ghi dữ liệu vào đó. Ví dụ 

$data = 'Some file data';

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

Chúng ta có thể thiết lập chế độ ghi thông qua tham số thứ 3 :

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

Chế độ ghi mặc định là wb. Thẻ 'b' đi kèm theo chế độ để ép kiểu này thành chế độ binary - nhị phân, tránh việc xử lý sai trên các Hệ Điều Hành khác nhau.

Có hai thẻ thường được dùng đó là 'b - binary''t - text'.

Bên dưới là các chế độ có thể có.

  • 'r' : Mở chỉ để đọc file; đặt con trỏ file tại đầu của file.
  • 'r+' : Mở để đọc và ghi; đặt con trỏ file tại đầu của file.
  • 'w' : Mở chỉ để ghi; đặt con trỏ file tại đầu của file và xóa trắng file đó. Nếu file đó không tồn tại thì sẽ tạo ra một file.
  • 'w+' : Mở để đọc và ghi; đặt con trỏ file tại đầu của file và xóa trắng file đó. Nếu file đó không tồn tại thì sẽ tạo ra một file.
  • 'a' : Mở để ghi; đặt con trỏ file tại cuối của file. Nếu file đó không tồn tại thì sẽ tạo ra một file.
  • 'a+' : Mở để đọc và ghi; đặt con trỏ file tại cuối của file. Nếu file đó không tồn tại thì sẽ tạo ra một file.
  • 'x' : Tạo và mở để đọc; đặt con trỏ file tại đầu của file. Nếu file đã tồn tại rồi, thì hàm fopen() trong php sẽ trả về FALSE và sinh ra lỗi mức E_WARNING-cảnh báo. Nếu file chưa tồn tại, sẽ tạo ra một file. 
  • 'x+' : Tương tự 'x' nhưng có cả chế độ ghi.
  • 'c' : Mở chỉ để ghi, Nếu file đã có rồi, nó sẽ không được xóa trắng (trái với 'w'), cũng không gọi sinh ra lỗi đối với hàm fopen() trong PHP (giống ở 'x'). Con trỏ sẽ được đưa về đầu dòng của file.
  • 'c+' : Giống như 'c' nhưng có thêm chế độ ghi.

Chú ý: Để hàm này thực hiện được việc ghi dữ liệu vào file thì chính file đó phải được thiết lập cấp quyền được ghi cho nó (ví dụ trên Linux là 666, 777 ...).

Nếu file không tồn tại thì thư mục chứa file cũng phải được thiết lập quyền được ghi.

c. Hàm delete_files('path/to/a/directory').

Hàm này dùng để xóa tất cả các file được lưu trữ trong một thư mục nào đó. Ví dụ

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

Nếu có tham số thứ 2 và được thiết lập là TRUE, thì tất cả các thư mục được chứa trong đường dẫn này cũng được xóa đi. Ví dụ:

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

Chú ý: Các file trong thư mục cần có 'quyền được ghi' hoặc được sở hữu bởi hệ thống mới có thể xóa được.

d. Hàm get_filenames('path/to/a/directory/').

Hàm này lấy một đường dẫn trên server làm đầu vào và trả về một mảng chứa tên của tất cả các file chứa trong thư mục đó.

Nếu có tham số thứ 2 và được thiết lập là TRUE thì trong mảng trả về chứa đường dẫn cụ thể đến từng file.

Ví dụ:

$a_Filename = get_file_info($sz_Dir, array('name','fileperms'));
echo '</pre>';
print_r( $a_Filename );
exit("====DEBUG====");

Kết quả trả về.

File helper trên CodeIgniter

e. Hàm get_dir_file_info('path/to/directory', $top_level_only = TRUE).

Hàm này đọc trong một thư mục cụ thể và dựng lên một mảng chứa tên file, kích thước, ngày tháng, và quyền. Các thư mục con chứa trong thư mục này chỉ được đọc nếu hàm có tham số thứ 2 được thiết lập là FALSE.

Nếu thiết lập tham số $top_leve_only = FALSE thì hệ thống sẽ chạy rất nặng nếu trong thư mục có nhiều thư mục con khác.

f. Hàm get_file_info('path/to/file', $file_information).

Hàm này lấy một đường dẫn tới một file làm tham số và trả về tên, đường dẫn, ngày chỉnh sửa của file đó. 

Tham số thứ 2 cho phép chúng ta khai báo rõ thông tin gì chúng ta muốn lấy.

Các thông số bao gồm: 

  • name - tên
  • server_path - đường dẫn tới file 
  • size - kích thước file 
  • date - ngày tháng
  • readable - có quyền đọc ?
  • writable - có quyền ghi ?
  • executable - có quyền thực thi ?
  • fileperms - thông tin quyền của file

Hàm sẽ trả về FALSE nếu không tìm thấy file.

g. Hàm get_mime_by_extension('file').

Hàm này dịch tên file mở rộng của một file thành một kiểu mime dựa trên file config/mimes.php.

Hàm này sẽ trả về FALSE nếu không định nghĩa được kiểu, hoặc mở file mimes.php.

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

h. Hàm symbolic_permissions($perms).

Hàm này lấy một số tương ứng với một quyền ( giống giá trị trả về của hàm fileperms()) và trả về ký hiệu chuẩn tương ứng của quyền đó. 

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

// Kết quả : -rw-r--r--

i. Hàm octal_permissions($perms).

Hàm này lấy một số tương ứng với một quyền ( giống giá trị trả về của hàm fileperms()) và trả về giá trị theo hệ octal tương ứng của quyền đó. 

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

// Kết quả : -rw-r--r--

Chúc các bạn thành công :)

Tags: