Mục đích của việc mở rộng trong laravel là gì?
Một số vấn đề khi sử dụng khung là bạn bị ràng buộc với những gì công cụ của họ cung cấp và trong một số phần, bạn phải làm mọi thứ theo cách của khung - điều này còn gây tranh cãi, một số khung làm tốt hơn và tệ nhất. Và nếu bạn muốn mở rộng một cái gì đó, bạn sẽ thay đổi giữa hai giải pháp. tạo phương thức hoặc Lớp trợ giúp của riêng bạn ở đâu đó hoặc mở rộng công cụ và ghi đè lên nó khi ứng dụng của bạn khởi động Show Tùy chọn cuối cùng, mở rộng một lớp với các phương thức mới của riêng bạn, là một điều rất rắc rối, vì bạn không chỉ yêu cầu khung tải công cụ của mình thay vì mặc định, mà còn phải chú ý đến các bản cập nhật, vì một công cụ mới Nếu có một cách dễ dàng để thêm phương thức tùy chỉnh của riêng bạn vào Lớp… …đợi đã. Có. Và được gọi là Macro Macro là cái quái gì vậy?Macro, như Laravel gọi chúng, là một cách đưa phương thức có thể gọi của riêng bạn vào một Lớp. Nó đã có từ Laravel 4. 2, vì vậy nó không phải là một cái gì đó mới Hãy nghĩ về chúng như một loại keo hoặc băng dính cho phép bạn dán một phương thức ở dạng Đóng vào Lớp bạn muốn mà không cần phải sửa đổi trực tiếp — điều hoàn toàn không được khuyến nghị khi lớp đến từ một gói bên ngoài khác — hoặc phải mở rộng . Giống như dán búa vào đèn pin để bạn có thể đóng đinh trong bóng tối mà không cần phải gọi nhà sản xuất để tạo ra chiếc đinh cho bạn. Và nếu bạn mua một mô hình cập nhật mới, băng và đèn pin vẫn có thể hoạt động
Macro không được ghi lại, ngoại trừ trên một số lớp có thể chứng minh là hữu ích như và. Xem xét trường hợp sử dụng, hoàn toàn ổn nếu không ghi lại chúng, nhưng bạn nhất định phải tìm kiếm chúng (sẽ nói thêm về điều đó sau) Các chức năng là huyền diệu
Ví dụ: nếu bạn sử dụng class ToBeMacroable7 bên trong Closure của mình, thì nó sẽ không tham chiếu đến lớp nơi nó được khai báo, mà là lớp bạn đang mở rộng. Nếu bạn đang mở rộng lớp Chế độ xem, thì class ToBeMacroable7 sẽ chỉ tham chiếu đến trường hợp đó use \Illuminate\Routing\ResponseFactory;class RandomThing Tất cả những điều này được thực hiện nhờ vào đặc điểm Macroable, bao gồm các phương thức ma thuật class ToBeMacroable0 và class ToBeMacroable0 chịu trách nhiệm thực hiện cuộc gọi phương thức của bạn và kết nối nó với Macro mà bạn đã đăng ký Này, nếu Lớp đã sử dụng phương pháp ma thuật “__call” thì sao?Một số lớp sử dụng phương pháp ma thuật class ToBeMacroable1 cho logic riêng của nó. Khi bạn sử dụng một đặc điểm có cùng tên phương thức, phương thức Lớp sẽ được ưu tiên. Như bạn có thể đoán, khi một lớp sử dụng class ToBeMacroable0, điều này đặt ra một vấn đề vì đặc điểm Macroable sẽ không hoạt động Giải pháp trong một số lớp là khai báo Macroable, mở dấu ngoặc nhọn và yêu cầu PHP bao gồm phương thức class ToBeMacroable1 là class ToBeMacroable4 class ToBeMacroable Sau đó, trong các phương thức class ToBeMacroable1 bên trong lớp, chúng tôi vui lòng hỏi xem có Macro đã đăng ký chưa và thực thi nó bằng cách sử dụng class ToBeMacroable4. Ví dụ, để cả hai phương pháp sống hạnh phúcCác lớp Macroable Như tôi đã đề cập trước đây, danh sách các lớp Macroable không được ghi lại. Điều tốt nhất bạn có thể làm là truy cập API và tìm kiếm trên class ToBeMacroable7 trên kho lưu trữ Github hoặc sử dụng IDE của riêng bạn Làm điều đó sẽ cho phép bạn có một danh sách rõ ràng về những gì Lớp học cho phép mở rộng Bản thân Laravel có sử dụng Macro không?Tất nhiên. Hãy lấy mẫu mã cho phép chúng ta sử dụng tiện dụng class ToBeMacroable8. Nếu bạn xem lớp Yêu cầu, bạn sẽ không thấy phương thức "xác thực" nào. Đoán xem, class ToBeMacroable9 class ToBeMacroable1 Phương thức macro'ed này kết nối một phiên bản trình xác thực với các quy tắc và đầu vào Yêu cầu. Sau đó chúng ta có thể sử dụng nó mà không cần thêm nhiều dòng mã, gọn gàng class ToBeMacroable2 Cách tốt nhất để đăng ký Macro là theo bất kỳ Nhà cung cấp dịch vụ nào hợp lý. Ví dụ: nếu tôi muốn đăng ký Macro cho lớp Chế độ xem, tôi sẽ sử dụng class ToBeMacroable10, nhưng nếu tôi đang đăng ký Macro cho Trình quản lý xác thực, tôi sẽ sử dụng class ToBeMacroable11 Và đó là tất cả. Không cần phải làm mã spaghetti run rẩy để chỉ cần thêm một số chức năng trong các công cụ khung Tiện ích mở rộng trong Laravel là gì?Các thành phần của Laravel thường được mở rộng theo hai cách. ràng buộc các triển khai mới trong vùng chứa IoC hoặc đăng ký tiện ích mở rộng với lớp Người quản lý, là các triển khai của mẫu thiết kế "Nhà máy" .
Làm cách nào để mở rộng lớp trong Laravel?Trên thực tế, cách thích hợp để mở rộng thư viện sẽ như sau. . Tạo phản hồi. php trong ứng dụng/thư viện/ Bên trong nó, mở rộng lớp theo cách sau. lớp Phản hồi mở rộng \Laravel\Response Nhận xét 'Phản hồi' => 'Laravel\\Response' trong ứng dụng/config/ứng dụng. php Kế thừa trong Laravel là gì?Mặc dù tính kế thừa là một trong những trụ cột của lập trình hướng đối tượng , nhưng nó thực sự ít có lợi hơn khi được sử dụng cùng với một khung như Laravel. Một trong những nhược điểm là bạn tạo một lớp ngăn cách giữa mã của bạn và Laravel. Trớ trêu thay, sự tách biệt này thường là động lực để sử dụng quyền thừa kế.
Năng suất trong Laravel là gì?Trong Laravel, @yield chủ yếu được sử dụng để xác định một phần trong bố cục và được sử dụng liên tục để tải nội dung từ trang con đến trang chính. |