2012-09-03 32 views
19

Tôi đã bắt đầu một dự án mới, nơi tôi sử dụng Composer để xử lý một số phụ thuộc, cũng như tự động tải của họ.Quản lý mã tùy chỉnh bằng trình tải tự động Composer?

Tôi chỉ giữ tệp composer.json trong VCS, thay vì toàn bộ thư mục của nhà cung cấp, vì vậy tôi không muốn bắt đầu thêm mã của mình vào đó.

Tôi nên xử lý mã dự án của riêng mình như thế nào để mã tự động tải?

Trả lời

39

Điều này thực sự rất đơn giản. Loại trừ thư mục nhà cung cấp khỏi kho lưu trữ của bạn là phương pháp đúng. Mã của bạn nên được lưu trữ ở một nơi riêng biệt (như src).

Sử dụng autoload tài sản để làm cho nhà soạn nhạc công nhận không gian tên của bạn (s):

{ 
    "autoload": { 
     "psr-4": { 
      "Acme\\": "src/" 
     } 
    } 
} 

Giả sử bạn có tên lớp theo tiêu chuẩn psr-4, cần làm việc. Dưới đây một số ví dụ về tên lớp và vị trí của họ trên hệ thống tập tin:

  • Acme \ Command \ HelloCommand -> src/Command/HelloCommand.php
  • Acme \ Mẫu \ Loại \ EmployeeType -> src/Form/Loại/EmployeeType.php

Hãy nhớ xác định không gian tên cho mỗi lớp. Dưới đây là một ví dụ về Acme \ Command \ HelloCommand:

<?php 

namespace Acme\Command; 

class HelloCommand 
{ 
} 

Đừng quên để bao gồm các autoloader trong bộ điều khiển PHP của bạn:

<?php 

require 'vendor/autoload.php'; 

Tìm hiểu thêm về PSR-4 standard on PHP Framework Interoperability Group.

Lưu ý rằng nếu bạn chỉnh sửa composer.json, bạn cần phải chạy cài đặt, cập nhật hoặc dump-autoload để làm mới đường dẫn lớp tự động tải.

+2

Bất kỳ cơ hội nào bạn có thể đăng cập nhật câu trả lời bằng các ví dụ mã đơn giản với một lớp giả hoặc hai? Mặc dù đọc tài liệu bạn đã liên kết và so sánh thư mục/không gian tên của tôi với các tài liệu được sử dụng trong nhà cung cấp /, tôi không thể tải các lớp của mình. – Letharion

+3

@Letharion đã cập nhật câu trả lời của tôi, hy vọng điều này sẽ hữu ích. –

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