Hướng dẫn dùng charcter types trong PHP
Như bạn có thể thấy từ các biểu đồ, PHP 7.0 là một cải tiến lớn về hiệu suất và việc sử dụng bộ nhớ. Đối với trang có các truy vấn cơ sở dữ liệu, phiên bản 7.0.0 nhanh hơn 3 lần so với 5.6 với opcache được bật và nhanh hơn 2,7 lần mà không cần opcache! Về mặt sử dụng bộ nhớ, sự khác biệt cũng rất đáng kể! Show Throwable interface Tái cấu trúc các exception class để có một naming scheme không trực quan và sẽ dẫn đến ít nhầm lẫn hơn, đặc biệt là đối với người dùng mới hơn. 9 và 0 bây giờ được implement 1Đây là hệ thống cấp bậc của 1
Chú ý: bạn chỉ có thể implement 1 thông qua 4 và 0.Unicode Codepoint Escape Syntax — “\u{xxxxx}”
Context Sensitive Lexer Với những từ globally reserved nay đã trở thành semi-reserved: 0Generator return expressions Cú pháp biến đồng nhất Mức hỗ trợ cho functions dirname() PHP 7.1Nullable Types 1Void Returns Có thể bạn quan tâm 2Không giống như các kiểu trả về khác được thi hành khi hàm được gọi, loại này được kiểm tra tại thời gian biên dịch, điều đó có nghĩa là một lỗi được tạo ra mà không cần gọi hàm. Một hàm có kiểu trả về là 6 hoặc hàm 6, có thể trả về ngầm hoặc có câu lệnh return mà không có giá trị: 3Iterable pseudo type Thông thường, một hàm chấp nhận hoặc trả về một 8 hoặc một object implementing 9 sẽ được sử dụng với 0. Tuy nhiên, vì mảng là kiểu nguyên thủy và 9 là một interface, hiện tại không có cách nào để sử dụng khai báo kiểu trên tham số hoặc kiểu trả về để chỉ ra rằng giá trị có thể lặp lại được. 4 2 cũng có thể được sử dụng như một kiểu trả về để chỉ ra một hàm sẽ trả về một giá trị lặp. Nếu giá trị được trả về không phải là một mảng hoặc instance của 9, 4 sẽ được throw. 5Các tham số được khai báo với 2 có thể sử dụng 6 hoặc một mảng làm giá trị mặc định. 6Closure from callable 7Cú pháp dấu ngoặc vuông cho phép destructuring assignment mảng 8Cú pháp dấu ngoặc vuông cho danh list() 9Class constant visibility 0Catching Multiple Exception Types 1PHP 7.2Mở rộng kiểu tham số 2Đếm các object không đếm được Gọi 7 trên một scalar hoặc object không implement Countable interface trả về 1 (phi logic).Trong phiên bản này đã thêm một cảnh báo khi gọi 7 với tham số là scalar, null hoặc một object không implement 9.Cú pháp dấu phảy được sử dụng trong namespace 3Argon2 Password Hash Các hàm 0 hiện có cung cấp interface đơn giản để băm mật khẩu. RFC này đề xuất triển khai Argon2i (v1.3) trong các hàm 0 để sử dụng thay thế an toàn cho 2.Debugging PDO Prepared Statement Emulation 4PHP 7.4 (In development)Typed properties 5Foreign Function Interface FFI là một trong những tính năng giúp Python và LuaJIT rất hữu ích cho việc tạo mẫu nhanh. Nó cho phép gọi các hàm C và sử dụng các kiểu dữ liệu C từ ngôn ngữ kịch bản thuần túy và do đó phát triển "system code" hiệu quả hơn. Đối với PHP, FFI mở ra một cách để viết các phần mở rộng và ràng buộc PHP vào các thư viện C trong PHP thuần. Null Coalescing Assignment Operator 6Preloading PHP đã sử dụng opcode caches từ lâu (APC, Turck MMCache, Zend OpCache). Họ đạt được hiệu suất tăng đáng kể bằng cách GẦN NHƯ loại bỏ hoàn toàn overhead của biên dịch lại PHP code. Preloading sẽ được kiểm soát chỉ bằng một chỉ thị 3 mới - opcache.preload. Sử dụng chỉ thị này, chúng ta sẽ chỉ định một file PHP - sẽ thực hiện nhiệm vụ tải trước. Sau khi tải, file này sau đó được thực thi đầy đủ - và có thể tải trước các file khác, bằng cách including chúng hoặc bằng cách sử dụng hàm 4.Luôn có sẵn hash extention Điều này sẽ làm cho hash extension (`ext / hash`) luôn có sẵn, tương tự như `date`. Phần hash extension cung cấp một tiện ích rất phong phú với nhiều thuật toán băm cực kỳ hữu ích trong các ứng dụng hiện đại, không chỉ trong code người dùng mà còn rất nhiều trong nội bộ. On the way to PHP 8.0JIT. Nói ngắn gọn. Khi bạn khởi động một chương trình PHP, Zend Engine sẽ phân tích code thành một cây cú pháp trừu tượng (AST) và dịch nó sang opcodes. Các opcodes là các đơn vị thực thi cho Máy ảo Zend (Zend VM). Opcode là mức độ khá thấp, do đó dịch code sang máy nhanh hơn nhiều so với code PHP gốc. PHP có một phần mở rộng có tên OPcache trong lõi, để lưu trữ các opcodes này.
Đây là một trong những chiến lược tối ưu hóa PHP cuối cùng và lớn nhất vẫn còn trên bàn. Các PHP engineers đang tìm kiếm để xem cách tiếp cận mới này có thể vượt qua các ứng dụng của họ. Thực sự quan tâm đến điều này. Nhất quán loại errors cho internal function Làm cho các API phân tích tham số nội bộ luôn tạo ra 4 nếu parameter parsing không thành công. Cần lưu ý rằng điều này cũng bao gồm 6 (con của 4) cho các trường hợp có quá ít/nhiều đối số được thông qua.So sánh hiệu suấtTôi đã soạn một bài test đơn giản để giúp dễ dàng so sánh hiệu suất của các phiên bản PHP khác nhau (sử dụng Docker). Điều này thậm chí sẽ cho phép dễ dàng kiểm tra hiệu năng của các phiên bản PHP mới chỉ bằng cách thêm tên container mới. Chạy trên Macbook pro, 2,5 GHz Intel Core i7. 7Nếu muốn tự kiểm tra, bạn có thể tìm source code trong repository này. Benchmarks từ PHP 5.6 trở lênTôi thực sự thích phần tổng hợp hiệu năng trực quan từ servbolt.com của tất cả các phiên bản chính từ 5.6 trở lên. Xem kết quả trong các bảng dưới đây. Tóm lược hiệu năngPHP 7.0.0 là một cột mốc quan trọng với hiệu suất được cải thiện đáng kể và sử dụng bộ nhớ thấp hơn nhưng các PHP maintainers chỉ đơn giản là hết ý tưởng để cải thiện nó. Một trong những điểm còn lại là biên dịch JIT (Just in time). Và nó đi kèm với PHP 8.0. Hướng phát triểnTrong suốt các phiên bản PHP 7.x, có một path có thể nhìn thấy được nhắc tới nhiều hơn (và khách quan hơn một chút) và ngôn ngữ lập trình hiện đại. Tuy nhiên, PHP thích áp dụng các tính năng hữu ích và gọn gàng từ các ngôn ngữ lập trình khác. Chúng ta sẽ sớm thấy một số tính năng hay hơn, như:
Với những điều này, PHP developers sẽ tham gia nhóm những người áp dụng ngôn ngữ hiện đại. Không có ngôn ngữ nào là hoàn hảo, nhưng PHP đang mở đường cho tương lai. TL;DRĐể rút ngắn hơn nữa, tôi đã chọn hầu hết các thay đổi quan trọng đối với ý kiến cá nhân của mình với phiên bản mới nhất của PHP 7.3. Chúng đây rồi:
References: https://wiki.php.net/rfc https://www.cloudways.com/blog/php-5-6-vs-php-7-symfony-benchmarks/ https://servebolt.com/articles/wordpress-5-0-php-7-2-vs-php-7-3-performance-and-speed-benchmark/ |
Bài Viết Liên Quan
Bbia 02 giá bao nhiêu?
Chắc hẳn son là một sản phẩm không thể thiếu trong bộ đồ makeup của các chị em. Và hiện nay trên thị trường có rất nhiều dòng son để chị em thỏa mái ...
Làm cách nào để đếm số lần xuất hiện của từng ký tự trong một chuỗi trong JavaScript?
Thông thường trong lập trình, mọi nhà phát triển cần đếm từng lần xuất hiện của một ký tự trong chuỗi hoặc câu trong một số tình huống. Trong bài viết ...
Thay đổi màu chữ trong php
Hôm nay chúng ta sẽ tìm hiểu cách điều chỉnh Font chữ, màu chữ và cỡ chữ sao cho phù hợp với nội dung của trang web, cũng như làm nổi bật một số từ ...
Tuyển dụng bóng đá trường trung học Oregon 2023
Trong vài năm qua, tôi có xu hướng ở lại làn đường của mình. Có nghĩa là chủ yếu thực hiện các lựa chọn có lợi cho Oregon đối với các mục tiêu chính ...
Làm thế nào để bạn trả về một danh sách từ một lớp trong python?
Trong bài học này, bạn sẽ tìm hiểu về các phương thức tích hợp bổ sung, không giống như các phương thức trong bài học trước, có các giá trị trả về.pop() ...
Tại sao vòng lặp while của tôi không hoạt động Python?
Vòng lặp While trong Python được sử dụng để thực thi lặp đi lặp lại một khối câu lệnh cho đến khi một điều kiện nhất định được thỏa mãn. Và khi ...
Dữ liệu có thể được phân loại thành bao nhiêu nhóm trong python
Trong số này, bước tách là đơn giản nhất. Trên thực tế, trong nhiều tình huống, chúng tôi có thể muốn chia tập dữ liệu thành các nhóm và làm gì đó với ...
Python cho AI và ML
Nếu bạn mới bắt đầu làm quen với thế giới trí tuệ nhân tạo (AI), thì Python là một ngôn ngữ tuyệt vời để học vì hầu hết các công cụ đều được ...
Javascript kiểm tra xem số có phải là lũy thừa của 2 không
Mục lụcTrong hướng dẫn này, chúng ta sẽ xem cách kiểm tra xem số có phải là lũy thừa của hai hay khôngCó nhiều cách để kiểm tra xem một số có phải là lũy ...
Bạn có thể biên dịch python thành assembly không?
Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồngBộ xử lý ...
Máy tính công thức Pascals
Chào mừng bạn đến với máy tính tam giác Pascal của chúng tôi, nơi bạn sẽ tìm hiểu cách sử dụng tam giác Pascal, cũng như lý do tại sao bạn nên sử dụng nó ...
3 tỷ Việt Nam bằng bao nhiêu USD
Bộ chuyển đổi Đô la Mỹ/Đồng Việt Nam được cung cấp mà không có bất kỳ bảo hành nào. Giá có thể khác với giá của các tổ chức tài chính như ngân ...
Cách hiển thị dữ liệu json trong bảng html bằng javascript?
Định dạng JSON được sử dụng nhiều để lưu trữ dữ liệu theo cách có cấu trúc. Ngay cả dữ liệu nhận được từ máy chủ cũng ở định dạng JSON. Ở ...
Có bao nhiêu tháng cho đến ngày 4 tháng 8 năm 2023
Có 193 ngày cho đến ngày 4 tháng 8Khoảng thời gian từ ngày 23 tháng 1 năm 2023 đến ngày 4 tháng 8 năm 2023Ngày này cách đây 6 tháng 11 ngày. Hơn hai mươi bảy tuần ...
Sử dụng biến trong đường dẫn tệp python
Bởi vì trình bao mặc định của bạn trong Terminal là zsh. So sánh những điều sau đây (_______74_______ in tên của shell hiện tại)user-166% echo $0 zsh user-166% ...
Chức năng ngủ trong PHP là gì?
Khi bạn muốn tạm dừng thực thi trong tập lệnh của mình, có hai cách để bạn triển khai mã. Một số người (rất may là rất ít) chọn tùy chọn đầu tiên và ...
Gốc sudo mysql
Nội dungTrong bài hướng dẫn này mình sẽ chỉ các bạn cách cài đặt MySQL trên Ubuntu 20. 04You can you likeCài đặt WireGuard với Docker Compose trên Ubuntu 22. 04Hướng ...
Làm cách nào để bạn thêm nhiều đối tượng trong javascript?
Các mảng JavaScript đi kèm với một phương thức sắp xếp tích hợp. Phương thức sắp xếp này chuyển đổi các phần tử mảng thành chuỗi và thực hiện sắp ...
Thêm dấu phẩy vào mảng python
Sử dụng phương pháp str.join() để chuyển đổi danh sách thành chuỗi được phân tách bằng dấu phẩy, e. g. my_str = ,.join(my_list). Phương thức str.join() sẽ nối ...
Làm cách nào để sử dụng phạm vi trong vòng lặp PHP?
Một vòng lặp foreach trong PHP là hoàn hảo để lặp qua các phần tử của một mảng được lập chỉ mục hoặc một mảng kết hợp. Vòng lặp sẽ bắt đầu từ ...