- PHP 7.3
- Web server: Nginx 1.14
- Database: MySQL5.7
- Laravel 5.8.*
IN:
Route => Controller => Service => Repository => Mode
OUT:
Mode => Repository => Service => Controller => Presenter => View
Tạo mới Git Repository để chưa Migration, tránh việc xung đột trong quá trình phát triển. Lý do: Có nhiều Repository sẽ sử dùng đến database nên không thê để Migration vào bất cứ Repository chức năng nào khác.
- Twig
- View Template Engine ( Thay thế cho Blade Template mặc định của Laravel )
- Gettext
- i18n ( Thay thế cho chức năng language mặc định của Laravel )
- Editor / IDE
- Sử dụng bất cứ loại nào, nhưng đảm bảo tuân thủ tiêu chuẩn PRS2 của PHP
- Quality
- Mess Detector (phpmd): Đảm bảo tiêu các tiêu chuẩn code
Việc ghi log chi tiết sẽ giúp cho quá trình debug và theo dõi hệ thống trở nên đơn giản hơn.
1/ Log được ghi bắt lại ở bất kỳ Service
nào thực thi
Nội dung ghi nhân bao gồm:
- Log info: dùng để thông báo bắt đầu và kết thúc một function. Ghi nhận các thông số là đường dẫn với hàm thực thì và các tham số thực thi
Bắt đầu function Service
\Log::info(sprintf('[Start Service] %s', $class), $arguments);
// $class: là đường dẫn tuyệt đối đến file thực thị,
//hoặc function thực thi
// $arguments: là danh sách các biên truyền vào
Kết thúc function Service
\Log::info(sprintf('[End Service] %s', $class));
// $class: là đường dẫn tuyệt đối đến file thực thị,
//hoặc function thực thi
- Log debug: Được sử dụng cho các trường hợp theo dõi Transaction với database
\Log::debug('beginTransaction');
//Khi bắt đầu mở một Transaction mới
\Log::debug('commit');
//Commit lại transaction hiện tại
\Log::debug('rollback');
//Rollback nếu gặp vấn đề
Ghi nhân lại tất cả các query được thực thi bao gồm
- Tên kết nối
- Thời gian thực thi
- Nội dung query
$log = [
'Connection' => $query->connectionName,
'Query_Time' => sprintf('%.4f ms', $query->time),
'SQL' => $sql,
];
Log::debug('excute query', $log);
Tuẩn thủ viết code theo kỹ thuật TDD
- Tạo Feature Test ( Theo tính năng )
- Kiểm tra validation
- Kiểm tra chứng thực
- Case 1: Kiếm tra login cho route ( Từ chối nếu không Auth )
- Case 2: Kiểm tra nếu đã Login ( Truy cập đúng route mong muốn )
- ...
- Tạo mới Model rỗng
- Tạo mới RepositoryInterface
- Tạo mới StubRepository
- Tạo mới Service ( Theo tính năng )
- Tạo mới Service Test
- Tạo mới Model rỗng
- Tạo mới RepositoryInterface
- Tạo mới Repository
- Tạo mới RepositoryTest
Yêu cầu đạt trên 80% dự án