Entrypoints
Hướng dẫn sử dụng entrypoint
Lời mở đầu
Trước đây, khi muốn tạo entrypoint, ta sẽ tạo một file xử lý và khai báo đường dẫn trong entry point registry. Điều này làm mất nhiều thao tác, chưa kể nếu xử lý phức tạp sẽ dẫn đến code rườm rà, không thể tái sử dụng. Thêm vào đó, mỗi entrypoint khai báo là một thế giới riêng, không đồng nhất cấu trúc, kiểu dữ liệu trả về dẫn đến khó kiểm soát, sửa lỗi.
Chính vì thế, hai coder giấu tên đã nảy ra ý tưởng để tối ưu hóa những khuyết điểm trên. Một người cho ý tưởng xử lý entrypoint qua class với mục đích dễ kiểm soát, dễ tái sử dụng, dễ bảo trì và nâng cấp. Mỗi method đóng vai trò là một action, parameters của method đó sẽ là body request. Người còn lại phụ trách gom tất cả các entrypoint về một entrypoint duy nhất. Cấu trúc chúng thành một Entrypoint Factory (tìm hiểu thêm về Design Patterns – Factory) để dễ xử lý.
Và vì vậy, nếu cần dùng đến entrypoint để xử lý ajax, send HTTP request, các bạn chỉ cần làm như sau:
Tạo entrypoint class
Vào đường dẫn custom/entrypoints/entrypoints_class tạo class với cú pháp sau
ep<ClassName>Class.php
Nội dung bên trong class:
<?php
class ep<ClassName>Class extends epClass {
public function __construct($request) {
$this->request = $request;
}
}
Trong đó thuộc tính request là giá trị body request khi send HTTP request
Bạn không cần phải quan tâm giá trị này ở đâu. Coder giấu tên đã làm cho bạn
Mỗi method trong class sẽ là action bạn muốn thực hiện với params tương ứng
<?php
class ep<ClassName>Class extends epClass {
public function __construct($request) {
$this->request = $request;
}
public function <methodName>($<param 1>, $<param 2>) {
// Code here
}
}
Tất cả method đóng vai trò là action đều phải trả về JSON string.
Lưu ý: Chỗ nào màu đỏ các bạn tự điền nhé, màu đen copy paste là được.
Vậy là xong, tới bước tiếp theo.
Call đến entrypoint
| Endpoint (URL) | index.php?entryPoint=epGeneral |
| Method | POST, GET |
| Body request (POST) URL Params (GET) | class: <ClassName> method: <methodName> params: [ <param 1> : value_1 <param 2> : value_2 ] |
| Content type | multipart/form-data application/x-www-form-urlencoded application/json |
| Return | JSON string |