Câu hỏi khá đơn giản - có thể mở rộng chức năng Laravel 5 theo bất kỳ cách thông minh nào hay bạn cần sao chép đôi khi rất nhiều mã/lớp để đạt được những gì bạn muốn.Mở rộng chức năng lõi Laravel 5
Vì nó khá rộng, tôi sẽ cung cấp cho bạn 2 ví dụ.
1) Tôi muốn thay đổi url cho edit
và create
cho \Illuminate\Routing\ResourceRegistrar
. Hiện tại, cách duy nhất tôi tìm thấy để đạt được điều đó là: mở rộng chính Illuminate Application
để vượt qua số RoutingServiceProvider
của riêng mình, sau đó mở rộng Router
, sau đó mở rộng Illuminate\Routing\ResourceRegistrar
và cuối cùng là sử dụng lớp Ứng dụng mở rộng của chúng tôi. Khá nhiều sửa đổi chỉ để thay đổi 2 dòng. Nhiều phương pháp được trên thực tế nhân đôi chỉ để vượt qua lớp tùy chỉnh của chúng tôi đó là mã chính xác như nhau ngoại trừ nó sử dụng lớp từ namespace khác
2) thay đổi tương tự khác - thiết lập đường dẫn tùy chỉnh cho cấu hình được lưu trữ - bạn cần phải một lần nữa mở rộng Application
để ghi đè phương pháp getCachedConfigPath
và sau đó thực hiện thay đổi trong bootstrap/app.php
Vì vậy, câu hỏi là - đó là cách mà một số sửa đổi cần phải thực hiện hoặc có thể giống nhau (ví dụ: 2 ở trên) có thể đạt được bằng cách nào đó không mở rộng lõi Application
lớp và thực hiện rất nhiều thay đổi?
Tôi nghĩ nếu bạn muốn tùy chỉnh/mở rộng Laravel thì Laravel có thể không phải là khung công tác của bạn hoặc có thể là một tính năng mới hoặc sửa chữa mà Laravel cần. Bạn đã cân nhắc xây dựng bootstrap của riêng mình với các gói của Laravel và Symfony chưa? – astroanu
Tôi kính trọng không đồng ý với @astroanu - Tôi không nghĩ rằng muốn tinh chỉnh một vài điều ở đây và có lý do đủ để vứt bỏ toàn bộ khuôn khổ và tất cả những thứ khác nó mang lại cho bạn. Không có khuôn khổ nào có thể là tất cả mọi thứ cho tất cả mọi người, vì vậy tôi nghĩ hoàn toàn có thể thực hiện một số thay đổi ở đây và ở đó khi cần thiết. Chỉ cần chắc chắn rằng bạn đang làm rõ tài liệu cho họ để một nhà phát triển tương lai quen thuộc với Laravel "out-of-the-box" có thể hiểu được nơi bạn đã khác với tiêu chuẩn. –
@JordanLev đọc nhận xét của tôi và lưu ý "nếu bạn muốn tùy chỉnh/mở rộng Laravel R muchNG" – astroanu