Tiêu chuẩn PSR-4 yêu cầu bạn cấu trúc hệ thống tệp nghiêm ngặt dựa trên không gian tên. Giả sử bạn có một ứng dụng trong thư mục src
với không gian tên App
, thì tất cả các không gian tên phụ sẽ phản ánh các thư mục con và tên lớp sẽ giống với tên tệp mà không cần tiện ích mở rộng .php
.
{
"autoload": {
"psr-4": { "App\\": "src/" }
}
}
src/
Foo/
Bar.php <---- App\Foo\Bar class
Baz.php <---- App\Baz class
Trình tự động sau đó "biết" nơi tìm kiếm tên của một tên đủ điều kiện nhất định và do đó không yêu cầu lệnh tự động tải để đánh hơi tệp cho lớp học.
Các vấn đề về hiệu suất sau đó được giải quyết với cờ composer dump-autoload --optimize-autoloader
hoặc -o
, sẽ tạo bản đồ lớp giống như cách tự động tải lớp bản đồ.
Mặt khác, classmap tự động load không yêu cầu bạn phải có hầu như bất kỳ tập tin nào đó hoặc cấu trúc thư mục, nó sẽ đệ quy đi qua .php
và .inc
tập tin trong thư mục và các tập tin định và sniff cho các lớp học trong đó .
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
Các lớp này sau đó được thêm vào danh sách (được lưu trong tệp PHP trong thư mục nhà cung cấp/nhà soạn nhạc) được sử dụng để tự động tải.
Bất kỳ lớp mới nào cũng phải được thêm vào danh sách đó bằng cách chạy lệnh composer dump-autoload
.
điều gì về các tệp php thuần túy không có lớp học? ví dụ. chỉ cần một tập tin php với một loạt các chức năng toàn cầu, làm thế nào để thêm vào đó? – Toskan
@Toskan xem https://getcomposer.org/doc/04-schema.md#files – Finwe