2013-07-28 22 views
7

Tôi chỉ cần tự động tải một số lớp, và tôi không thích sự điên rồ không gian tên psr-0 (không có hành vi phạm tội).Làm thế nào để tự động tải các lớp học mà không có không gian tên với Composer mà không cần cài đặt lại?

này được sử dụng để làm việc tốt trong dự án của tôi:

"psr-0": { 
    "": [ 
     "app/controller/", 
     "app/model/" 
    ] 
} 

Đối với một số lý do nó không hoạt động nữa, mặc dù tôi đang sử dụng cùng một phiên bản Composer. Tôi cần nó cho một dự án mới cũng đang sử dụng Silex. Đây có phải là xung đột với Silex không?

Tôi biết về tùy chọn "classmap", nhưng nó vô dụng vì nó yêu cầu tôi chạy "composer install" mỗi lần tôi thêm một lớp mới.

Bất kỳ ý tưởng nào?

Trả lời

1

Nếu bạn chỉ muốn tạo lại tệp tự động tải sử dụng composer dump-autoload.

6

Cố gắng sử dụng thuộc tính JSON "nguyên thủy", không phải mảng (như trong ví dụ của bạn). này làm việc cho tôi với psr-4 như bạn nói, với "": "app/":

{ 
"autoload": { 
    "psr-4": { 
     "Robbie\\": "core/", 
     "": "app/" 
    } 
}, 
"require": { 
     "monolog/monolog": "1.2.*" 
    } 
} 

này mang lại cho tôi không gian tên Robbie dưới thư mục core, như một ví dụ về nguồn không được kiểm soát bởi nhà soạn nhạc, các bên thứ 3 (nhà cung cấp) Monolog namespace và không gian tên mặc định hoặc không tên của tôi cho các nguồn bên dưới thư mục app.

Sau một copmpser update, tất cả chúng đều có sẵn khi bao gồm cả autoload.php tạo:

<?php  
require_once 'vendor/autoload.php'; 
// ...  
?> 
+0

' "": "app /"' không hoạt động – Toskan

+0

Tôi nghĩ rằng sự kết hợp giữa cho nộp nhà soạn nhạc tên và chạy composer install composer update composer cài đặt composer update đã làm nó cuối cùng – Toskan

Các vấn đề liên quan