![[RFC] Duration class](/images/og-default.png)
Tim Düsterhus and Derick Rethans have proposed a new Time\Duration class for PHP 8.6 to represent stopwatch-style durations, primarily to improve the developer experience for timeout-related APIs like the new Polling API. The RFC is intentionally minimal, using a seconds+nanoseconds internal representation (similar to Rust's and Java's Duration). Community discussion covers design decisions including: why the highest constructor unit is hours while internal storage uses seconds, the absence of an ISO 8601 serialization method (deferred to PHP 8.7), omission of floating-point total methods due to precision concerns, namespace choice (Time vs DateTime), and whether to use add/sub methods or a single variadic sum method. The RFC is positioned as the first step toward a modernized PHP date/time API, following the pattern of new namespaced APIs introduced in PHP 8.2–8.5.
Nguồn: https://externals.io/message/131786. 8sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
Nguyên tắc DRY (Don't Repeat Yourself) quan trọng nhưng việc loại bỏ trùng lặp cũng có chi …

Cuộc thảo luận trên mailing list nội bộ PHP xem xét đề xuất bổ sung kiểu dữ liệu cho closures (ví dụ: Closure(int, string): array) nhằm mục đích kiểm tra kiểu tham số và kiểu trả về tại các biên giới kiểu. Các bên tranh luận về phạm vi (chỉ Closure hay mở rộng toàn bộ callable), ưu nhược điểm giữa cú pháp inline và cú pháp alias, cũng như mối liên hệ với tính năng type aliases trong tương lai.
Lập trình viên PHP nên đọc để hiểu cách PHP đang tái đánh giá và chuẩn bị triển khai các tương lai của kiểu dáng đóng gói (typed closures)—một công cụ mạnh mẽ giúp cải thiện tính chính xác kiểu dáng ở ranh giới gọi hàm, từ đó nâng cao chất lượng mã và giảm sự phụ thuộc vào kiểu dáng động.

Bài thảo luận đề xuất bổ sung phương thức đối tượng cho các kiểu scalar (số, chuỗi) trong PHP, cho phép gọi trực tiếp như $str->trim() hay (3)->pow(2). Phương pháp này sử dụng cơ chế dispatch tĩnh, chuyển đổi thành lời gọi static tới các lớp nội bộ mà không thêm opcode mới, nhưng vấp phải phản đối về phạm vi áp dụng hạn chế do mô hình biên dịch theo file của PHP và nguy cơ phá vỡ công cụ phân tích tĩnh.
Lập trình viên nên đọc bài này để hiểu cách PHP đang thảo luận về cách mở rộng tính năng gọi phương thức trực tiếp trên giá trị nguyên thủy (scalar) như $str->trim() mà vẫn đảm bảo hiệu suất và tính bảo mật thông qua cơ chế phân tán compile-time.

Một chuyên gia công nghệ với 20 năm kinh nghiệm lập luận rằng danh xưng "Full-Stack Developer" đang trở nên hạn chế, thay vào đó đề xuất khái niệm "Feature Expert" (Chuyên gia Tính năng). Giá trị cốt lõi không nằm ở ngôn ngữ hay framework mà ở khả năng nhận diện các mẫu vấn đề lặp đi lặp lại (tính toán giá, tối ưu tìm kiếm, caching) và giải quyết chúng bất kể tech stack. Bài viết khuyên các lập trình viên trình độ trung cấp nên tập trung vào cấu trúc dữ liệu và xây dựng kho kiến thức các vấn đề đã giải quyết thay vì tích lũy ngôn ngữ.
Là người muốn nâng cao hiệu quả làm việc và chuyên sâu trong các vấn đề thực tế như tính toán giá, tối ưu tìm kiếm hay quản lý bộ nhớ, bài viết này giúp bạn chuyển từ kiến thức kỹ thuật sang tư duy giải quyết vấn đề xuyên suốt các ngôn ngữ và công nghệ.
Nhóm phát triển PHP vừa tung ra phiên bản 8.4.23, một bản cập nhật bảo mật quan trọng cho …
Việc sử dụng thư viện open source trở nên tốn kém hơn do chi phí duy trì, kiểm toán và phụ thuộc, trong khi LLMs giúp viết code rẻ hơn đáng kể. Giờ đây, chỉ nên dùng thư viện cho các lĩnh vực nhạy cảm bảo mật hoặc phức tạp, còn code đơn giản nên tự phát triển với sự hỗ trợ của LLM.
Làm việc với các dự án nhỏ hoặc logic đơn giản, hiểu cách tối ưu hóa giữa sử dụng thư viện mở nguồn và viết lại từ đầu sẽ giúp bạn tiết kiệm thời gian và tránh rủi ro khi phụ thuộc vào các công cụ lớn mà không kiểm soát được.
Swagger Codegen có thể tạo ra một package NPM từ file Swagger JSON của API, cung cấp cho nhà phát triển frontend các phương thức đã định kiểu cho mọi endpoint mà không cần dùng Axios hay định nghĩa kiểu thủ công. Quá trình này yêu cầu Java, chạy lệnh CLI trỏ đến URL swagger.json, sau đó đóng gói output thành tarball có thể cài đặt qua npm, giúp đồng bộ hợp đồng hình dạng dữ liệu giữa backend và frontend.
Lập trình viên frontend sẽ tiết kiệm thời gian và tránh lỗi khi có các định dạng kiểu tự động từ Swagger Codegen, giúp đồng bộ hóa API và ứng dụng mà không cần phụ thuộc vào Axios hoặc định nghĩa thủ công.
Di chuyển từ kiến trúc monolith sang microservices cần áp dụng các pattern cụ thể thay vì viết lại toàn bộ. Bốn chiến lược chính gồm: Strangler Fig (dần dần chuyển lưu lượng qua API gateway), Parallel Run (chạy song song để kiểm chứng), Collaborator (thêm microservices mới mà không sửa core), và Change Data Capture (đồng bộ dữ liệu real-time bằng Debezium/Kafka Connect). Các pattern này hiệu quả nhất khi kết hợp theo trình tự trong quá trình chuyển đổi.
Lập trình viên nên đọc bài này để hiểu cách chuyển đổi từ kiến trúc monolith sang microservices một cách chỉnh xác, ít rủi ro và tối ưu hóa hiệu suất, không phải là một thay đổi đột ngột mà là một quá trình thuần túy, có kế hoạch với các mẫu thiết kế hiệu quả.