Khi nào nên sử dụng các phương thức tĩnh PHP
Hãy để tôi cố gắng thuyết phục bạn tại sao trạng thái chia sẻ là sai và cách tránh nó để trở thành một nhà phát triển tốt hơn Show
Trong ấn phẩm trước của tôi, tôi đã cố gắng thuyết phục bạn ngừng sử dụng từ khóa “extends” trong PHP. Hôm nay tôi có một số lời khuyên cho bạn về trạng thái được chia sẻ khi sử dụng “tĩnh”. Nhớ. chỉ vì bạn có thể, không có nghĩa là bạn nên tl; dr không có ưu điểm, chỉ có khuyết điểm. Mã được thiết kế phù hợp không cần bất kỳ phương thức tĩnh hoặc thuộc tính tĩnh nào. Đóng tĩnh và phương pháp nhà máy tĩnh là hoàn toàn tốt Ngừng sử dụng “extends” trong PHPBạn có sử dụng các lớp trừu tượng hoặc các lớp mở rộng trong mã miền của mình không?Blog. thiên tài. io Khi đề cập đến tĩnh tại thời điểm viết, có ba khả năng. Chúng tôi sẽ xem xét tất cả chúng và thảo luận về lý do tại sao chúng thường được sử dụng và cách tránh chúng Phương pháp lớp tĩnhCác phương thức lớp tĩnh chủ yếu được sử dụng để dễ dàng gọi một lớp từ một lớp khác. Ban đầu có thể rất hấp dẫn để làm như vậy, nhưng cuối cùng, nó dẫn đến những quyết định thất thường như gửi e-mail từ đối tượng người dùng. Kết quả cuối cùng luôn giống nhau. một mớ hỗn độn Nhược điểm
Thay vì sử dụng các phương thức tĩnh, hãy sử dụng phép nội xạ phụ thuộc. Trên thực tế, mọi khung hiện đại đều cung cấp cho bạn tính năng tiêm phụ thuộc vượt trội. Xóa từ khóa tĩnh khỏi phương thức và thêm lớp vào hàm tạo Thuộc tính lớp tĩnhThuộc tính lớp tĩnh chủ yếu được sử dụng để áp dụng mẫu ghi nhớ để áp dụng tối ưu hóa vi mô. Kỹ thuật bộ nhớ đệm đơn giản này có thể cải thiện hiệu suất bằng cách giữ dữ liệu được truy cập thường xuyên gần với quá trình triển khai. Phương pháp này không phản tác dụng trong PHP, bởi vì quá trình này chỉ tồn tại trong yêu cầu HTTP và sau đó nội dung sẽ nhanh chóng được giải phóng Chúng cũng được sử dụng để áp dụng mẫu singleton, một trong những mẫu tồi tệ nhất đang lưu hành trong ngành, vì những lý do đã nêu ở trên đối với các phương thức lớp tĩnh Mọi thứ trở nên phức tạp khi chúng ta bắt đầu chuyển mã sang các quy trình chạy dài như lệnh cron, queue worker hoặc khi chuyển sang async PHP như Swoole. Nếu dữ liệu không được giải phóng đúng cách, bạn có thể gặp phải tình trạng rò rỉ bộ nhớ khi tăng mức sử dụng RAM và ứng dụng sẽ chết do lỗi hết bộ nhớ Nhược điểm
Thay vào đó, bạn nên thêm bộ điều hợp bộ đệm bằng cách sử dụng tính năng tiêm phụ thuộc trong khung của mình và đảm bảo rằng Thời gian tồn tại được đặt cho từng mục để cuối cùng cho phép xóa bộ đệm biến tĩnhTôi chưa bao giờ sử dụng chúng, nhưng tôi đã thấy chúng được sử dụng để lưu trữ dữ liệu vào bộ đệm hoặc để giảm mức sử dụng bộ nhớ bằng cách giữ lại các dịch vụ có thể sử dụng lại như ứng dụng khách HTTP Nhược điểm của việc sử dụng các biến tĩnh hoàn toàn giống như đối với các thuộc tính của lớp tĩnh và một lần nữa, không có ưu điểm nào Thay vì giữ một thuộc tính tĩnh, bạn nên thêm phần phụ thuộc vào hàm tạo Kịch bản hợp lệ cho mã tĩnh Có một số kịch bản hoàn toàn tốt cho mã tĩnh. Chúng bao gồm đóng cửa bất biến$userList = $collection->map(static function(User $user): array { Phương pháp nhà máy bất biếnfinal class UserNotFoundException extends \DomainException Phương pháp bất biến riêng tưpublic function getPrintableName(): string Sau khi bạn thoát khỏi trạng thái chia sẻ, việc triển khai mã của bạn trên đám mây sẽ dễ dàng hơn nhiều. Tránh các phương thức tĩnh thúc đẩy thói quen tốt và làm cho mã của bạn ít bị rối hơn và dễ kiểm tra hơn Trong hàng ngàn hàng vạn dòng code mà tôi phải duy trì trong công việc chuyên môn của mình, tôi thấy không có lý do gì để sử dụng mã tĩnh, không có lý do gì để bạn làm như vậy. Hãy tự hỏi bản thân bạn đã sẵn sàng để trở thành một nhà phát triển tốt hơn chưa? . Bạn sẽ cảm ơn tôi sau này Bất kỳ nghi ngờ? . Hãy cùng nhau làm cho mã của chúng tôi đẹp. Đăng ký các ấn phẩm của tôi để biết thêm các bài viết như thế này để trở thành một nhà phát triển tốt hơn Câu chuyện này có giá trị gì với bạn không? . Bạn có biết rằng bạn có thể vỗ tay nhiều hơn một lần? |