Bạn là một coder, một website developer hay là một người quản trị web, trang website của bạn có thể được xây dựng dựa trên các CMS xây dựng bằng ngôn ngữ PHP như WordPress, joomla, Drupal, Magento, Opencart, prestashop… Hãy cùng lamweb.vn tìm hiểu xem php 7 có điều gì mới và khác biệt nhé
Mục lục
Điều gì đã xảy ra với PHP 6?
Khi nói đến phiên bản lớn tiếp theo là 7 trong khi chúng ta đang phát triển trên phiên bản 5+ cho đến nay, phần đông người tự hỏi điều gì đã xảy ra với phiên bản 6. đó là một câu chuyện dài, vì lẽ đó, để tránh bối rối khi Việc này được đưa ra, đây là một vài cuộc tranh luận và bài đăng thú vị mà bạn nên đọc:
- https://philsturgeon.uk/php/2014/07/23/neverending-muppet-debate-of-php-6-v-php-7/
- https://wiki.php.net/rfc/php6
- https://news.ycombinator.com/item?id=8786919
Nói ngắn gọn, các sai lầm unicode mà đáng lẽ phải được xử lý trong phiên bản 6 cuối cùng đã thất bại, vì phát sinh quá là nhiều khó hiểu. Họ quyết định rằng phiên bản 6 đã quá hư hỏng để giữ cho nó sống, và việc chuyển lên phiên bản PHP 7 đã được làm.
Những tính năng mới
Chúng tôi đã đề cập về các tính năng mới một thời gian nhanh chóng trước đó, tuy nhiên đây chính là một danh sách toàn diện hơn bao gồm các liên kết đến thông tin về chúng – bây giờ là thời điểm để bạn nhảy vào tìm hiểu kỹ càng.
Để tìm hiểu về những gì sắp tới và liên quan của nó có thể có đối với bạn:
- Danh sách chính thức về các tính năng mới
- Danh sách cực kỳ đầy đủ trên Github
- Loạt bài “What to Expect (những điều mong đợi)”
- PHP7 một cái nhìn thoáng qua
- Bài viết về những tính năng mới của PHP7 trên DigitalOcean
- Bài viết về 5 tính năng ít được biết tới trong PHP 7 của tác giả Colin O’dell, chỉ là một trong loạt bài rất hữu ích của Colin về PHP 7
Nếu bạn yêu thích các video miễn phí, thì 2 trang web này sẽ giúp ích cho bạn:
- Codecourse tại https://www.codecourse.com/library/lessons/php-7-new-features
- Laracasts tại https://laracasts.com/series/php7-up-and-running
Để tìm hiểu về type system, đây có thể là sự chỉnh sửa lớn nhất, và so sánh nó với hack:
- http://www.dmiller.io/blog/2015/4/26/comparing-the-php7-and-hack-type-systems
- https://medium.com/the-white-hat-elephpant/php7-more-strict-but-only-if-you-want-it-to-be-78d6690f2090
Tiếp tục với PHP 7
- Nếu bạn mong muốn cài đặt PHP 7 trên phiên bản mới nhất của OS X, hãy coi http://php-osx.liip.ch/
- Cuốn sách Jump Start PHP Environment – một cuốn sách bạn thật sự cần, được xem xét và hiệu đính bởi Ross Tuck đáng kính. đấy là một cuốn sách ngắn về những thứ cần tiếp tục trước khi code – học về các requests, responses, máy ảo, và tất cả những điểm trọng yếu khác trong việc cài đặt các máy chủ và máy tăng trưởng cục bộ. Cuốn sách này có thể giúp bạn chuẩn bị để viết code đa nền tảng, và giúp cho người khác có thể tham gia vào team của bạn một cách dễ dàng.
- Khóa học giới thiệu PHP 7 từ Zend (có phí) – rất tốt cho những người đã thân thuộc với PHP 5
- Hướng dẫn chuyển đổi chính thức từ 5.x lên 7
- Bài đăng tuyệt vời của Erika trên trang DigitalOcean
Rất nhiều công cụ chuyển đổi và kiểm duyệt tính tương thích đã có sẵn cho bạn sử dụng:
- PHP7MAR (Migration Assistant Report) sẽ báo cáo bất kỳ sự không nhất quán nào giữa code base hiện tại của bạn và PHP 7, nhờ đấy bạn có thể lập kế hoạch và ngân sách để nâng cấp thích hợp.
Cuối cùng nhưng không kém phần quan trọng, PHPToday có một danh sách rất tuyệt vời về các cuộc tranh luận mà bạn nên tham khảo tại đây.
Các công cụ, kiểm thử và hosting
Rất nhiều công cụ có ích đã nổi lên xung quanh việc phát hành phiên bản mới này:
- PhpStorm, luôn cập nhật nhanh hơn bao giờ hết, đã hỗ trợ PHP 7 phong phú.
- Exakat là một analyzer khác rất hữu ích
- Tuli cũng là một analyzer khác – nhưng tốc độ tăng trưởng của nó có phần chững lại. nếu như bất cứ ai mong muốn viết một bài để so sánh cả 3 công cụ trên thì hãy cho chúng tôi biết!
- Andrea Faulds đã tung ra một số package PHP 7 độc quyền thú vị mà đảm bảo bạn có thể muốn xem!
- Phan là một static analyzer, các tính năng của nó bạn có thể đọc ở đây. Chúng tôi sẽ có một hướng dẫn chi tiết trong thời gian sắp tới, cho những người chú ý.
- Một Vagrant box bởi Rasmus Lerdorf là box được sử dụng khi kiểm thử trên nhiều phiên bản PHP, và có thể được tải về tại đây. hướng dẫn về cách sử dụng nó ở đây.
- Travis CI đã giúp đỡ và hỗ trợ PHP 7 đầy đủ. cài đặt một project để thử nghiệm rất đơn giản, chỉ cần tạo file
.travis.yml
trông kiểu như thế này:
language: php
php:
- 5.6
- 7.0
- hhvm
# This triggers builds to run on the new TravisCI infrastructure.
# See: http://docs.travis-ci.com/user/workers/container-based-infrastructure/
sudo: false
matrix:
allow_failures:
- php: 7.0
before_script:
- travis_retry composer self-update
- travis_retry composer install --no-interaction --prefer-source
script:
- phpunit --coverage-text --coverage-clover=coverage.clover
after_script:
- if [[ $TRAVIS_PHP_VERSION != 'hhvm' && $TRAVIS_PHP_VERSION != '7.0' ]]; then php vendor/bin/ocular code-coverage:upload --format=php-clover coverage.clover; fi
Trên đây chính là thu thập cảm hứng từ PhpLeague skeleton – một skeleton package PHP 7 đã sẵn sàng, vì vậy nếu bạn đang bắt đầu một cái mới, đó là nơi để bạn nên chú ý.
- Vào thời điểm hiện tại, các hosting giúp đỡ và hỗ trợ PHP 7 khá là thưa thớt, tuy nhiên bạn hãy luôn theo dõi trên trang http://phpversions.info/php-7/ – danh sách các hosting có thể được cập nhật khi có thông tin mới.
Một vài nội dung có sự liên quan
Đối với các tài nguyên để phát triển các extension cho PHP 7 (những cái này hơi khác với các API extension), http://gophp7.org/gophp7-ext/ vẫn là trang web số một.
Để tham gia cộng đồng và thảo luận về các sai lầm hay tìm sự giúp hỗ trợ, một vài kênh sau đây có thể tốt cho bạn, sắp đặt theo thứ tự phổ biến:
- Trên IRC, các nhóm ##php
- Đối với những người yêu thích thảo luận dạng diễn đàn, thì subreddit PHP có thể là một nơi mang lại nhiều kiến thức, tuy nhiên nó cũng là một “bãi mìn”. vì vậy bạn hãy thận trọng.
- nếu bạn không phải là một fan của thể loại IRC hoặc Reddit, nhưng cũng yêu thích các cuộc thảo luận trực tiếp, thì PHP Slack Channel và chat room StackOverflow PHP có thể phù hợp với bạn.
- Để tham gia vào một user nhóm mà đôi khi họp mặt offline, thì hãy lướt qua trang web http://php.ug/
xem thêm : Tìm hiểu PHP 7, có điều gì mới, và hơn nữa
Vậy có nhiều điểm gì cần quan tâm trong phiên bản này???
1. Tên là PHP 7 (không phải 6)
Phiên bản ổn định hiện nay đang được sử dụng là phiên bản PHP 5.6. Sau một vài bàn cãi thì nhóm tăng trưởng đã quyết định họ sẽ bỏ qua cái tên PHP 6 cho phiên bản lớn kế tiếp. PHP 6 đã xuất hiện trong lịch sử như một dự án thử nghiệm nhưng không bao giờ đạt đến giai đoạn trở thành một phiên bản hoàn chỉnh.
Để tránh việc người dùng sẽ bị lẫn lộn giữa phiên bản thử nghiệm trước đây và bản tăng trưởng mới nhất này, thì bản phát hành mới sẽ mang tên PHP 7.
2. Dùng Zend Engine hoàn toàn mới
Zend engine đã tạo ra sức mạnh cho PHP từ năm 1999 khi nó được giới thiệu với bản phát hành mới PHP 4.
Zend – bạn đừng nhầm lẫn với Zend Framework – là một engine thực thi mã nguồn mở được viết bằng C để thông dịch ngôn ngữ PHP.
Loạt PHP 5.X hiện tại dùng Zend Engine II tăng cường công dụng của engine ban đầu, bổ sung thêm một mô hình đối tượng mở rộng và nâng cao hiệu năng thực thi đáng kể cho ngôn ngữ này.
PHP 7 có một phiên bản engine hoàn toàn mới có tên gọi là PHP#NG (Bạn có thể tham khảo thêm tại đây https://wiki.php.net/phpng ).
3. Tốc độ nhanh gấp hai lần
Ưu thế dễ nhận biết nhất của engine mới PHPNG là sự cải thiện hiệu suất đáng kể. Đội ngũ tăng trưởng của PHPNG đã tái cấu trúc Zend Engine, Đặc biệt là tối ưu hóa việc sử dụng bộ nhớ và bổ sung thêm một bộ biên dịch just-in-time (JIT) cho phép biên dịch vào thời điểm chạy chứ không phải trước khi thực hiện.
Kết quả mang lại được ra sao? bạn sẽ thấy bảng so sánh tốc độ thực thi như hình dưới đây được phân phối bởi Zend Performance Team. bằng cách dùng PHP 7 không chỉ giúp code của bạn thực thi nhanh hơn mà bạn cũng sẽ cần ít máy chủ hơn để phục vụ cùng một số lượng user.
4. Quản lý lỗi dễ dàng hơn
Ít nhất cũng phải nói rằng, việc kiểm soát và có khả năng bắt các fatal error chưa bao giờ là công việc dễ dàng đối với các lập trình viên PHP. Engine Exceptions mới sẽ cho phép bạn thay thế những loại lỗi này với các ngoại lệ (exception). nếu ngoại lệ không bắt được thì PHP sẽ tiếp tục trả về các fatal error kiểu như các phiên bản PHP 5.X hiện hành.
Các đối tượng mục tiêu \EngineException mới không mở rộng \Exception Base Class. Điều này đảm bảo khả năng tương yêu thích ngược và các mục đích từ hai kiểu exception không giống nhau trong việc quản lý lỗi: truyền thống và engine exceptions.
Để cho phép các lập trình viên có thể bắt được cả hai, PHP 7 giới thiệu một Parent Class mới dưới cái tên là \BaseException.
5. Hỗ trợ các bộ máy Windows 64-Bit
PHP là một thành viên nổi bật của stack LAMP (Linux – Apache – MySQL – PHP), có nghĩa môi trường gốc của nó là Linux – nhưng bạn cũng có thể chạy nó trên một bộ máy Windows. Các phiên bản PHP 5.X chưa phân phối số integer 64-bit hoặc hỗ trợ các tập tin lớn, do đó cho đến tận bây giờ các bản build x64 đã được cho là thử nghiệm.
PHP 7 sẽ thay đổi Điều này với việc giới thiệu nhất quán hỗ trợ 64-bit có nghĩa là cả các số nguyên 64-bit và các tệp lớn có thể được hỗ trợ, cho phép bạn tự tin chạy ngôn ngữ này trên hệ điều hành Windows 64-bit của bạn trong tương lai.
6. Các toán tử mới Spaceship và Null Coalescing
Toán tử Spaceship chạy dưới tên chính thức là Combined Comparison Operator (toán tử so sánh kết hợp). Ký hiệu của toán tử mới trông như thế này: <=> (giống như một con tàu vũ trụ giản đơn, nếu như bạn siêng năng tưởng tượng).
Toán tử spaceship này trả về 0 nếu như cả hai toán hạng bằng nhau, 1 nếu như toán hạng bên trái lớn hơn, và -1 nếu như toán hạng bên phải lớn hơn. Nó cũng được gọi là một toán tử so sánh three-way, và đã tồn tại trong những ngôn ngữ lập trình phổ biến khác như Perl và Ruby.
Toán tử Null Coalescing được thể hiện bằng hai dấu chấm hỏi (??). bạn có thể dùng nó khi mong muốn kiểm tra xem liệu một điều gì đó có tồn tại và trả về một giá trị mặc định hay không. Toán tử coalesce trả về kết quả của toán hạng đầu tiên nếu như nó tồn tại và không null, và trả về toán hạng thứ 2 trong các trường hợp khác.
Đây là cách mà toán tử mới này giảm được thời gian với những việc khai báo cơ bản:
7. Cho phép khai báo kiểu chính xác
Bạn đã bao giờ mong muốn ngăn chặn các giá trị trả về không ước muốn bằng cách khai báo giá trị trả về của một function? Vâng, bản PHP 7 mới này cho phép các lập trình viên nâng cao chất lượng code của họ với sự giúp hỗ trợ của các khai báo kiểu trả về.
Hình dưới đây mô tả một trường hợp rất đơn giản nơi mà function foo() được giả thiết là trả về một mảng. Bạn hãy tìm thêm những VD khó hiểu hơn ở link này nhé!
Để mở rộng các tính năng này nhiều hơn, PHP 7 giới thiệu 4 kiểu khai báo mới cho các kiểu vô hướng: int, float, string và bool. Những kiểu vô hướng mới này cho phép các lập trình viên biểu thị rằng họ đang chờ đợi các thành quả integer, float, string, hoặc boolean được trả về. các loại vô hướng mới được giới thiệu bởi PHP 7 cũng có thể được hỗ trợ bởi Type Hints cho phép các lập trình viên chú ý vào kiểu của các tham số kể từ các bản PHP 5.X.
8. Bổ sung thêm các class Anonymous
PHP 7 cho phép bạn sử dụng các class vô danh (anonymous), đây là một đặc trưng đã có trong những phương ngữ lập trình hướng đối tượng mục tiêu khác như C# và Java. Một class anonymous là một class không có tên. đối tượng mà nó khởi tạo có cùng công dụng như một đối tượng mục tiêu của một lớp có tên.
Cú pháp giống như chúng ta dùng trong các class PHP truyền thống, chỉ có thiếu cái tên class. nếu như các lớp vô danh (anonymous classes) được sử dụng tốt, chúng có thể làm tăng vận tốc thực thi. Các lớp vô danh là xuất sắc khi một class chỉ được dùng một lần trong suốt quá trình thực thi và trong những trường hợp một class không cần phải được ghi tài liệu.
9. Thuận tiện khi Imports từ cùng Namespace
Đặc trưng mới group Use Declarations sẽ là một món quà đáng giá dành cho những ai muốn import nhiều class từ cùng namespace. Cú pháp mới cắt bỏ sự rườm rà, làm cho code của bạn trở nên gọn gàng và dễ nhìn hơn, và giúp tiết kiệm cho bạn rất nhiều thời gian ngồi gõ code.
Nó cũng sẽ giúp việc đọc code và debug trở nên đơn giản hơn, việc khai báo sử dụng group giúp cho bạn xác định các import thuộc về cùng module.
10. Loại bỏ các công dụng cũ biến mất được giúp đỡ và hỗ trợ
Mục đích của PHP 7 là nhằm giải phóng không gian để cho phép phát triển, vì thế nó là cần thiết để giải thoát khỏi nhiều tính năng bị phản đối và cũ, các Server API và các extension không nên giúp đỡ và hỗ trợ. nếu như bạn muốn được xem chi tiết thì hãy click đây và đây nữa nhé!
Toàn bộ các mục bị gỡ bỏ đã không được tán đồng một thời gian trong PHP 5, vì vậy gần như bạn thường không thể dùng chúng trong một thời gian dài. tuy vậy cũng xin lưu ý nếu như bạn có một ứng dụng đang chạy kế thừa từ các phiên bản PHP cũ hơn thì bản PHP 7 này có thể sinh ra lỗi trên ứng dụng của bạn.
tham khảo thêm : PHP 7: Có gì mới?
Vũ – Tổng hợp
Tham khảo ( bachkhoa-aptech.edu.vn, techmaster.vn, … )