DANH MỤC: PHP 7

Bài 1: Giới thiệu về PHP7


Bài đầu tiên cho series học PHP sẽ là đôi lời giới thiệu qua về PHP7 xem nó có gì hay hơn các phiên bản cũ không(đương nhiên là phải hay rồi không thì nâng cấp làm chi).

Chú ý: Bài này chỉ nêu ra những khác biệt từ PHP 5.6.x đến PHP 7.0.x

1, Tổng quan.

-PHP 7 nghe qua thì mọi người cũng biết nó là gì rồi đúng không? PHP 7 là một phiên bản mới của PHP được phát hành vào ngày 09 tháng 06 năm 2015 và đến thời điểm mình viết bài này thì nó hiện đang ở phiên bản 7.1.3 (phát hành ngày 07-05-2016).

-PHP 7 là phiên bản mà được rất nhiều các lập trình viên mong đợi, vì nó có rất nhiều cải tiến cả về hiệu năng lẫn các thư viện.

2, Những thứ mới trong PHP 7.

-Dưới đây một số các thay đổi trong PHP 7.0.X so với PHP 5.6.X

Hiệu năng

-Đầu tiên phải kể đến đó là về hiệu năng, PHP 7 đã cải tiến hiệu năng vượt trội so với các phiên bản cũ. Ở các CMS hay các framework thì PHP 7 đều cho chúng ta một kết quả cực tốt. Cụ thể nó có thể nhanh gấp 2 lần so với các phiên bản cũ hơn.

so sánh php trên magento2

-Như chúng ta thấy thì PHP 7 đều cho kết quả nhanh gấp đôi so với PHP 5.6.2, nhưng dường như ở phiên bản 7.1.0 thì có đôi chút chậm hơn so với PHP 7 (Chú ý: PHP 7.1.3 đã cho hiệu năng nhanh hơn PHP 7.0)

-Và với các framework mạnh như Laravel và Zend  cũng đều cho kết quả rất tốt.

Ràng buộc dữ liệu truyền vào hàm

-Ở phiên bản này PHP đã cho phép chúng ta ràng buộc dữ liệu truyền vào hàm.

VD:

<?php 
function getSum(int $number)
{
    return $number + 5;
}

Xác định kiểu dữ liệu trả về cho hàm

-Không những ràng buộc dữ liệu truyền vào PHP còn ràng buộc cả dữ liệu trả về của hàm.

VD:

<?php 
function getResult(int $number) : int
{
    return $number;
}

Toán tử null Coalesce

-Nếu như trước đây chúng ta phải sử dụng các câu lệnh điều kiện loằng ngoàng để gán giá trị cho một biến thì giờ đây với PHP 7 chúng ta có thể gán giá trị hết sức ngắn gọn với toán tử ?? .

VD:

<?php
//Nếu tồn tại biến $c thì $a = $c
//Nếu không tồn tại biến $c thì $a = 4
$a = $c ?? 4;

Toán tử Spaceship

-Bổ sung thêm toán tử <=> .

VD:

<?php 
echo 5 <=> 6; //-1
echo 6 <=> 6; //0
echo 7 <=> 6; //1
echo "a" <=> "b"; //-1
echo "b" <=> "b"; //0
echo "b" <=> "a"; //1

Hằng có thể là mảng

-Nếu như trước đây chúng ta chỉ có thể khai báo hằng là số hoặc chuỗi với define() thì ở PHP 7 chúng ta có thể khai báo hằng là một mảng dữ liệu.

VD

<?php
define('CONNGUOI',[
    'nguoi lon',
    'tre con'
    ]);
echo CONNGUOI[0]; //nguoi lon

Lớp ẩn danh (anonymous classes)

-Nếu như ở các versition trước các bạn chỉ có thể sử dụng được hàm ẩn danh, thì ở phiên bản này đã hỗ trợ chúng ta lớp ẩn danh.

VD:

<?php
interface NguoiLon
{
    public function getName();
}
class ConNguoi
{
    private $nguoiLon;
    public function setNguoiLon(NguoiLon $nguoiLon)
    {
        $this->nguoiLon = $nguoiLon;
    }
    public function getNguoiLon(): NguoiLon
    {
        return $this->nguoiLon;
    }
}
$connguoi = new ConNguoi();
$connguoi->setNguoiLon(new class implements NguoiLon {
    public function getName(): string
    {
        return 'anonymouse class';
    }
});
echo $connguoi->getNguoiLon()->getName(); //anonymouse class

Nhóm use

-Nếu như trước đây bạn phải khai báo nhiều use cho các namespace có cùng tên thì giờ đây bạn có thể gộp chúng lại một group use.

VD:

<?php
// trước PHP 7
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;

// PHP 7 trở lên
use some\namespace\{ClassA, ClassB, ClassC as C};

Bổ sung thêm hàm intdiv()

-Bổ sung thêm hàm intdiv() với chức năng chia lấy nguyên.

VD:

<?php 
echo  intdiv(9,3); //3
echo  intdiv(10,3); //3
echo  intdiv(11,3); //3

Và một số thứ khác ít sử dụng

..... xem thêm .....

3, Những thứ bị loại bỏ khỏi PHP 7.

Hàm khởi tạo trùng tên class

-Trước đây chúng ta có 2 cách khai báo hàm khởi tạo trong đối tượng:

  • Một là khai báo trùng với tên class
  • Hai là khai báo magic methods __construct().

-Thì giờ đây PHP 7 chỉ chấp nhận cách khai báo hàm khởi bằng magicmethods.

VD:

<?php
class foo {
    function foo() {
        echo 'Class Foo được gọi';
    }
}
//Deprecated: Methods with the same name as their class will not be
// constructors in a future version of PHP; foo has a deprecated constructor

Loại bỏ các extensions

  • ereg
  • mssql
  • mysql
  • sybase_ct

Loại bỏ các SAPIs

  • aolserver
  • apache
  • apache_hooks
  • apache2filter
  • caudium
  • continuity
  • isapi
  • milter
  • nsapi
  • phttpd
  • pi3web
  • roxen
  • thttpd
  • tux
  • webjames

5, Lời kết.

-Dựa những cải tiến mới của PHP 7 thì theo quan điểm của mình thì mọi người nên dần chuyển sang sử dụng PHP 7 nhằm khắc phục được phần nào về hiệu năng cũng như tính thiết kế thiếu chặt chẽ của nó. Về vấn đề máy chủ thì đến thời điểm mình viết bài này, hầu như tất cả các nhà cung cấp hosting lớn đã hỗ trợ hết PHP 7 rồi nên các bạn cứ yên tâm mà dùng PHP 7.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

The best way to learn is to share

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia