🛞 Xây dựng Codebase theo dạng package - Part 02

🛞 Xây dựng Codebase theo dạng package - Part 02

date
Mar 11, 2022
slug
xay-code-base-theo-dang-package-part-02
status
Published
tags
Chia sẻ
Study
summary
Hey, chào anh em. Hôm nay mình tiếp tục chia sẻ về codebase theo dạng pakage, tiếp nối part 01 giới thiệu sơ qua một chút mở màn cho những gì mình đã và đang làm.
type
Post
Chúng ta đã hiểu sơ qua cách để cài đặt một package như mình mô tả ở bài viết trước. Cụ thể là tính năng install 1 repo custom do chính chúng ta tạo ra, sử dụng container-installer.
Thêm một cái nữa là mình muốn tự chủ được toàn bộ code phần Core của Apiato, từ v10 họ tách thư muc Ship/core ra thành 1 package riêng, yêu cầu require trong file composer.json. Nên mình đã move nó vào thư muc App luôn.
notion imagenotion image
Tại đây thì mình có thể tự do chỉnh sửa, tất nhiên là nếu có thay đổi gì mình sẽ extend các class gốc và bổ sung logic chứ ko sửa trực tiếp vào code đã có. Đảm bảo khi mình thấy Change Log có gì mới là mình cập nhật được luôn.
Ok, bát đầu đến phần tạo các repo phân tách tính năng như sau:
notion imagenotion image
notion imagenotion image
notion imagenotion image
Mình tạo ra 23 repo phân chia theo từng cụm tính năng, đây là những module mà mình đã từng làm và sử dụng ở rất nhiều dự án khác nhau
Vậy cấu trúc của từng module này sẽ ra sao? Tương tự như cách mà Apiato thiết lập ban đâu theo Porto Pattern, có các thành phần cơ bản như:
notion imagenotion image
Trong file composer.json của mỗi module có thành phần quan trọng để xác định xem package được lọc và cài đặt ở đâu: đó là biến type
notion imagenotion image
Tiếp đến là require vào dự án của chúng ta, thêm cấu hình vào file Ship/composer.json
notion imagenotion image
Tiếp đến là chạy lệnh composer installl, kết quả chúng ra có được là cài đặt thành công các module:
notion imagenotion image
Phải lưu ý rằng các module bên trong này sẽ bị reset code về hiện trạng repo trên git, anh em không nên sửa code trong đây, mà hãy thực hiện việc kế thừa và thay đổi logic bên trong các class kế thừa repo cha.