Làm thế nào các thư mục được sử dụng trong PHP?

Bây giờ bạn có thể kiểm tra, đọc và ghi vào tệp, hãy chuyển sự chú ý của bạn sang các thư mục. PHP cung cấp nhiều hàm để làm việc với thư mục. Bạn sẽ xem cách tạo, xóa và đọc chúng

Tạo thư mục với mkdir[]

mkdir[] cho phép bạn tạo một thư mục. mkdir[] yêu cầu một chuỗi biểu thị đường dẫn đến thư mục bạn muốn tạo và một số nguyên phải là số bát phân biểu thị chế độ bạn muốn đặt cho thư mục. Bạn chỉ định một số bát phân [cơ số 8] với số 0 đứng đầu. Đối số chế độ sẽ chỉ có tác dụng trên các hệ thống Unix. Chế độ phải bao gồm ba số từ 0 đến 7, tương ứng thể hiện các quyền đối với chủ sở hữu thư mục, nhóm và mọi người. Hàm này trả về true nếu nó tạo thành công một thư mục hoặc false nếu nó không tạo. Nếu mkdir[] không thành công, điều này thường là do thư mục chứa có các quyền không cho phép ghi các quá trình có ID người dùng của tập lệnh. Nếu bạn không thoải mái với việc đặt quyền truy cập thư mục Unix, bạn sẽ thấy rằng một trong những ví dụ dưới đây phù hợp với nhu cầu của bạn. Trừ khi bạn thực sự cần thư mục của mình có thể ghi trên thế giới, có lẽ bạn nên sử dụng 0755, cho phép thế giới đọc thư mục của bạn nhưng không ghi vào đó

mkdir[ "testdir", 0777 ]; // global read/write/execute permissions
mkdir[ "testdir", 0755 ]; // world and group: read/execute only
             // owner: read/write/execute

Xóa thư mục bằng rmdir[]

rmdir[] cho phép bạn xóa một thư mục khỏi hệ thống tệp, nếu quy trình đang chạy tập lệnh của bạn có quyền làm như vậy và nếu thư mục trống. rmdir[] chỉ yêu cầu một chuỗi đại diện cho đường dẫn đến thư mục bạn muốn tạo

rmdir[ "testdir" ];

Mở thư mục để đọc với opendir[]

Trước khi bạn có thể đọc nội dung của một thư mục, trước tiên bạn phải có được một tài nguyên thư mục. Bạn có thể làm điều này với hàm opendir[]. opendir[] yêu cầu một chuỗi đại diện cho đường dẫn đến thư mục bạn muốn mở. opendir[] trả về một xử lý thư mục trừ khi thư mục không có hoặc không thể đọc được, trong trường hợp đó, nó trả về false

$dh = opendir[ "testdir" ];

Đọc nội dung của một thư mục với readdir[]

Giống như bạn sử dụng get[] để đọc một dòng từ tệp, bạn có thể sử dụng readdir[] để đọc tên tệp hoặc thư mục từ một thư mục. readdir[] yêu cầu xử lý thư mục và trả về một chuỗi chứa tên mục. Nếu đã đến cuối thư mục, readdir[] trả về false. Lưu ý rằng readdir[] chỉ trả về tên của các mục của nó, thay vì đường dẫn đầy đủ. Liệt kê 10. 14 hiển thị nội dung của một thư mục

Liệt kê 10. 14 Liệt kê nội dung của một thư mục với readdir[]

 1: 
 2: 
 3: Listing 10.14 Listing the contents 
 4: of a directory with readdir[]
 5: 
 6: 
 7: ";
15: }
16: closedir[ $dh ];
17: ?>
18: 
19: 

Chúng ta mở thư mục để đọc bằng hàm opendir[] ở dòng 9 và sử dụng câu lệnh while để lặp qua từng phần tử của nó ở dòng 11. Chúng tôi gọi readdir[] như một phần của biểu thức kiểm tra câu lệnh while, gán kết quả của nó cho biến $file. Trong phần thân của câu lệnh while, chúng ta sử dụng biến $dirname kết hợp với biến $file để tạo một đường dẫn tệp đầy đủ, sau đó chúng ta có thể kiểm tra đường dẫn này trên dòng 12. Nếu đường dẫn dẫn đến một thư mục, chúng ta in " " ra trình duyệt ở dòng 13. Cuối cùng, chúng tôi in tên tệp trên dòng 15

Chúng tôi đã sử dụng một cấu trúc thận trọng trong bài kiểm tra câu lệnh while. Hầu hết các lập trình viên PHP [bao gồm cả tôi] sẽ sử dụng một cái gì đó như sau

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }

Giá trị được trả về bởi readdir[] sẽ được kiểm tra. Bởi vì bất kỳ chuỗi nào khác với "0" sẽ phân giải thành true, nên sẽ không có vấn đề gì. Tuy nhiên, hãy tưởng tượng một thư mục chứa bốn tệp "0", "1", "2" và "3". Đầu ra từ đoạn mã trước trên hệ thống của tôi như sau

.
..

Khi vòng lặp đến tệp có tên "0", chuỗi được trả về bởi readdir[] sẽ chuyển thành false, khiến vòng lặp kết thúc. Cách tiếp cận trong Liệt kê 10. 14 sử dụng === để kiểm tra xem giá trị trả về được trả về bởi readdir[] không chính xác tương đương với false. 0 chỉ giải quyết sai trong thử nghiệm, vì vậy chúng tôi tránh được sự cố

Trong quá trình phát triển PHP hàng ngày của bạn, bạn thường cần xử lý một hệ thống tệp—ví dụ: lấy danh sách các tệp trong một thư mục cụ thể. PHP cung cấp một vài cách khác nhau để đọc nội dung của một thư mục một cách dễ dàng. Hôm nay, chúng ta sẽ xem qua tất cả các phương pháp này, cùng với các ví dụ để hiểu cách thức hoạt động của từng phương pháp

Hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5,
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
6 và
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
7

Trong phần này, chúng ta sẽ thảo luận về các hàm

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5,
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
6 và
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
7 để xem cách bạn có thể sử dụng chúng để lấy danh sách các tệp trong một thư mục cụ thể

Hàm

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5 cho phép bạn mở một bộ điều khiển thư mục mà bạn có thể sử dụng cùng với các hàm khác cho các hoạt động khác nhau trên thư mục. Bạn cần chuyển đường dẫn đến thư mục trong đối số đầu tiên của hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5. Nếu đường dẫn thư mục hợp lệ, tài nguyên xử lý thư mục sẽ được trả về

Hàm

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
6 cho phép bạn đọc một thư mục. Bạn cần cung cấp một xử lý thư mục hợp lệ trong đối số đầu tiên của hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
6 và bạn có thể lặp lại tất cả các mục nhập và nhận danh sách tất cả các tệp trong một thư mục

Hàm

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
7 cho phép bạn đóng điều khiển thư mục được mở bởi hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5. Bạn nên sử dụng hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
7 sau khi hoàn thành các thao tác của mình trên bộ điều khiển thư mục [ban đầu được mở bởi hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5]

Bây giờ, hãy xem nó hoạt động trong ví dụ sau

Đầu tiên, chúng tôi đã sử dụng chức năng

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5 để xử lý thư mục. Tiếp theo, chúng tôi đã sử dụng hàm
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
6 để lặp qua xử lý thư mục
2 và lưu trữ danh sách các tệp trong mảng 
3

Hàm
4

Trong phần này, chúng ta sẽ xem cách bạn có thể sử dụng hàm

4 để lấy nội dung thư mục

Hàm

4 là một cách khá đơn giản để lấy danh sách các tệp và thư mục trong một thư mục cụ thể. Bạn chỉ cần chuyển đường dẫn thư mục mà bạn muốn đọc vào đối số đầu tiên của hàm 
4

Hãy xem qua ví dụ sau để hiểu cách thức hoạt động của nó

rmdir[ "testdir" ];
3

Như bạn có thể thấy, điều này cung cấp một danh sách các tệp và thư mục trong một cuộc gọi. Nếu bạn chỉ cần lấy danh sách các tệp trong một thư mục, thì đây là lựa chọn tốt hơn so với sử dụng

while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
5,
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
6 và
while [ $file = readdir[ $dh ] ] {
   print "$file
\n"; }
7

Hàm
rmdir[ "testdir" ];
41

Hàm

rmdir[ "testdir" ];
41 hoạt động tương tự như hàm
4, với sự khác biệt là nó cho phép bạn chỉ định một mẫu để lọc và khớp các tệp trong thư mục

Hãy xem cách sử dụng hàm

rmdir[ "testdir" ];
41 để đọc tất cả nội dung của một thư mục cụ thể

Như bạn có thể thấy, chúng tôi đã vượt qua mẫu

rmdir[ "testdir" ];
45 vì chúng tôi muốn đọc tất cả nội dung. Mặt khác, nếu bạn chỉ muốn liệt kê một loại tệp cụ thể, bạn cũng có thể làm điều đó, như minh họa trong đoạn mã sau

rmdir[ "testdir" ];
4

trong trường hợp này,

3 sẽ chỉ chứa tên của các tệp 
rmdir[ "testdir" ];
47

Hàm
rmdir[ "testdir" ];
48

Các tùy chọn mà chúng tôi đã thảo luận cho đến nay cho phép bạn đọc nội dung thư mục theo cách thủ tục. Trong phần này, chúng ta sẽ xem cách bạn có thể sử dụng hàm

rmdir[ "testdir" ];
48, đây là cơ chế hướng đối tượng để đọc thư mục

Khi bạn sử dụng hàm

rmdir[ "testdir" ];
48 và chuyển một đường dẫn thư mục vào đối số đầu tiên, hàm này sẽ trả về một thể hiện của lớp
$dh = opendir[ "testdir" ];
61 mà sau đó bạn có thể sử dụng để đọc nội dung thư mục

Hãy xem qua ví dụ sau để xem nó hoạt động chính xác như thế nào

$dh = opendir[ "testdir" ];
6

Đầu tiên, chúng ta sử dụng hàm

rmdir[ "testdir" ];
48 để khởi tạo một thể hiện của lớp
$dh = opendir[ "testdir" ];
61 thành biến
$dh = opendir[ "testdir" ];
64. Tiếp theo, chúng tôi đã sử dụng phương thức
$dh = opendir[ "testdir" ];
65 của lớp
$dh = opendir[ "testdir" ];
61 để lặp lại tất cả các mục

Lớp học
$dh = opendir[ "testdir" ];
67

Trong phần này, chúng ta sẽ xem cách bạn có thể sử dụng lớp

$dh = opendir[ "testdir" ];
67 để đọc nội dung thư mục. Lợi ích của việc sử dụng lớp
$dh = opendir[ "testdir" ];
67 là bạn có thể mở rộng các phương thức của lớp này và nó cũng cung cấp rất nhiều phương thức hữu ích khác cho phép bạn tìm nạp nhiều thông tin khác nhau về tệp

Hãy xem qua ví dụ sau để hiểu cách thức hoạt động của nó

 1: 
 2: 
 3: Listing 10.14 Listing the contents 
 4: of a directory with readdir[]
 5: 
 6: 
 7: ";
15: }
16: closedir[ $dh ];
17: ?>
18: 
19: 
6

Như bạn có thể thấy, thật dễ dàng để sử dụng lớp

$dh = opendir[ "testdir" ];
67 và lặp lại các mục nhập. Trong ví dụ trên, chúng tôi đã sử dụng phương thức
 1: 
 2: 
 3: Listing 10.14 Listing the contents 
 4: of a directory with readdir[]
 5: 
 6: 
 7: ";
15: }
16: closedir[ $dh ];
17: ?>
18: 
19: 
61 của lớp
$dh = opendir[ "testdir" ];
67 để lấy tên tệp. Tuy nhiên, lớp
$dh = opendir[ "testdir" ];
67 cũng cung cấp một số phương thức tiện ích như
 1: 
 2: 
 3: Listing 10.14 Listing the contents 
 4: of a directory with readdir[]
 5: 
 6: 
 7: ";
15: }
16: closedir[ $dh ];
17: ?>
18: 
19: 
64,
 1: 
 2: 
 3: Listing 10.14 Listing the contents 
 4: of a directory with readdir[]
 5: 
 6: 
 7: ";
15: }
16: closedir[ $dh ];
17: ?>
18: 
19: 
65,
 1: 
 2: 
 3: Listing 10.14 Listing the contents 
 4: of a directory with readdir[]
 5: 
 6: 
 7: ";
15: }
16: closedir[ $dh ];
17: ?>
18: 
19: 
66, v.v.

Vì vậy, đó là cách bạn có thể sử dụng lớp

$dh = opendir[ "testdir" ];
67 để lấy danh sách các tệp trong một thư mục

Sự kết luận

Hôm nay, chúng ta đã thảo luận về các cách khác nhau để liệt kê tất cả các tệp trong một thư mục trong PHP. Dưới đây là bảng so sánh từng phương pháp để giúp bạn chọn phương pháp nào phù hợp với mình

Làm cách nào để sử dụng thư mục trong PHP?

Có thể tạo một thư mục mới trong PHP bằng hàm mkdir[] . Hàm này lấy một đường dẫn đến thư mục được tạo. Để tạo một thư mục trong cùng thư mục với tập lệnh PHP của bạn, chỉ cần cung cấp tên thư mục. Để tạo một thư mục mới trong một thư mục khác, hãy chỉ định đường dẫn đầy đủ khi gọi mkdir[].

Các chức năng của thư mục là gì?

Thư mục được sử dụng để lưu trữ, sắp xếp và phân tách các tệp và thư mục trên máy tính . Ví dụ: bạn có thể có một thư mục để lưu trữ ảnh và một thư mục khác để lưu trữ tất cả các tài liệu của bạn. Bằng cách lưu trữ các loại tệp cụ thể trong một thư mục, bạn có thể nhanh chóng chuyển đến loại tệp bạn muốn xem.

Làm cách nào để truy cập thư mục trong PHP?

Sử dụng hằng số __DIR__ được xác định trước để tìm đường dẫn thư mục của tệp trong PHP . Sử dụng hàm dirname[] để tìm đường dẫn thư mục gốc của dự án trong PHP. Sử dụng $_SERVER['DOCUMENT_ROOT'] để tìm thư mục gốc tài liệu của tệp trong PHP.

Làm cách nào để thêm thư mục trong PHP?

Hàm mkdir[] tạo thư mục được chỉ định bởi tên đường dẫn.

Chủ Đề