Code Tu Tam

Một số cải tiến cơ bản trong PHP từ bản PHP 5 tới PHP 8 (P1)

Rate this post

PHP – ngôn ngữ lập trình có tuổi đời trên 20 năm, một ngôn ngữ đã rất phổ biến với đại đa số lập trình viên. Theo số liệu thống kê của w3 thì PHP là ngôn ngữ lập trình web phổ biến nhất hiện nay. PHP được sử dụng trong gần 80% lượng website trên thế giới.

 

Phần trăm các website sử dụng tính theo phiên bản PHP

 

Các phiên bản PHP chủ yếu hiện tại là PHP 5.x và 7.x, cũng đương nhiên thôi vì PHP 8 còn chưa ra mắt mà.

Vậy trong bài viết ngày hôm nay cùng Code Từ Tâm tìm hiểu qua những sự thay đổi cơ bản trong các phiên bản code PHP gần đây nhất của PHP nhé.

Chúng ta hãy xem PHP đã có những sự chuyển mình như thế nào.

Những thay đổi này chỉ là 1 số thay đổi tiêu biểu trong các bản PHP mà CodeTuTam note lại. Các thay đổi này không đại diện hoàn toàn cho toàn bộ sự thay đổi của phiên bản đó.

PHP thửa sơ khai

Từ thủa hồng khai, PHP ra đời năm 1994 bởi Rasmus Lerdof và chính thức ra mắt vào 1995. Tuy vậy vào thời kì đầu này mọi thứ đều rất sơ khai. PHP ban đầu được xem như tập con đơn giản các mã kịch bản Perl mà thôi. Và đương nhiên như 1 số ngôn ngữ khác, PHP được xây dựng trên nền ngôn ngữ C.

Rasmus Lerdof được mệnh danh là cha đẻ của PHP

PHP 3.0 bước nhảy vọt đầu tiên.

Cùng với việc tái cấu trúc lại mã nguồn, cũng như huy động được đội ngũ đông đảo tham gia phát triển. PHP 3.0 cho phép người dùng cuối nhiều kha rnawng kết nối và tùy chỉnh, hứa hẹn đây là ngôn ngữ phát triển mạnh mẽ trong tương lại.

Đã có lúc thời điểm này PHP 3.0 được cài đặt cho xấp xỉ 10% số máy chủ web có trên mạng Internet.

Mặc dù PHP 4.0 cũng tạo ra những bước thay đổi đột phát về hiệu năng xử lý, tuy vậy phải đến với phiên bản PHP 5.0 trở đi, PHP thực sự được lột xác với nhiều phần mở rộng và hỗ trợ tốt hơn hết. Chúng ta sẽ cùng đi sâu vào từng phiên bản ngay sau đây.

PHP từng bước khẳng định vị thế của mình

Phiên bản PHP 5.0 – đánh dấu chuyển mình của một ông lớn.

PHP càng được sử dụng rộng dãi, những yếu kém của nó trong việc lập trình hướng dối tượng càng hiện rõ hơn cả. Điều này chính là 1 tiền đề để ra mắt PHP 5.0 – phiên bản chính thức hỗ trợ cho lập trình hướng đối tượng OOP và hàng loạt các phần mở rộng khác. Và chỉ từ sau PHP 5.1 trở đi PHP mới bắt đầu đi vào quỹ đạo của sự ổn định và phát triển mạnh mẽ

Cũng chính vì lẽ đó mà PHP còn được đánh giá là ngôn ngữ lập trình của năm 2004 theo đánh giá của website Tiobe

Tham khảo thêm ở đây : https://www.tiobe.com/tiobe-index/

PHP 5.3 cùng 1 số thay đổi cơ bản

Namespace

Còn nhớ rằng các phiên bản PHP trước đây, khi mà chưa hỗ trợ namepace thì tên class dài cứ gọi là miên man. Ví dụ cho kiểu: University_Economic_YearThree_Student. Và phiên bản PHP 5.3 chính thức ra mắt với việc hỗ trợ namespace.

Tuy vậy Namespace thời này cũng còn khá là “khó ưa nhìn”

Ví dụ

namespace University::Economic::YearThree;
class Student{
}

Toán tử 3 ngôi trong PHP

Chắc hẳn các bạn đã quá quen với cú pháp ?:, tuy vậy chỉ đến PHP 5.3 cú pháp này mới được giới thiệu.

Cú pháp này thương đương với 1 câu lệnh if else

If($a>$b){
        $result = $a;
}
else{
        $result = $b;
}

Hay được viết là :

$result = $a>$b?$a:$b;

Từ khóa goto

Tham khảo thêm tại Goto của PHP.net

Lệnh Goto cho phép mã lệnh thực thi sẽ nhảy đến 1 vị trí định sẵn từ trước. Tuy nhiên theo góc độ của mình việc này hạn chế sử dụng. Điều này có thể tạo ra những đoạn mã dư thừa hoặc rất khó bảo trì vận hành về sau.

Anonymous functions

Anonymous functions rất hay trong các việc khai báo hàm mà hàm chức năng đó chỉ sử dụng 1 lần. việc này khá thuận thiện cho sử dụng và không tạo ra những code dư thừa sau này

$example = function (){
	echo “Hello World”;
}
$example();

PHP 5.4 cùng những cải tiến

Ra đời vào năm 2015 cùng với sự nỗ lực giúp mã nguồn PHP gọn gàng hơn trong cách sử dụng, PHP 5.4 mang tới những thay đổi khá tích cực.

Khai báo array ngắn gọn hơn với [ ]

Từ 5.4 chúng ta có thể khai báo array trong PHP với 2 cách sau

$arr = [1,3,4,5,6];

Hoặc

$arr = array(1,2,3,4,5,6,7);

 

Trait lần đầu tiên được giới thiệu trong PHP

Trait là cơ chế hỗ trợ tái sử dụng lại đoạn mã (có sử dụng lại nhiều class khác nhau) mà không phải kế thừa. Việc này cũng giảm thiểu gánh nặng cho cơ chế đơn kế thừa của PHP

<?php 
trait Hello{
	public function say(){
		echo   “Say Hello”;
	}
}
class A{
	use Hello;
}
$a = new A;
$a->say();

 

PHP phiên bản 5.5

Try Catch Block nay đã hỗ trợ thêm khối finally

Viêc đưa vào sử dụng khôi Finally thì đoạn mã code php sẽ tối ưu hơn, cũng nhưng không bị lặp code

Namespace được thay đổi quy chuẩn dễ nhìn và gọn gàng hơn

Kể từ PHP 5.5 namespace sẽ được sử dụng dưới dạng

University\Student 
//thay vì
University::Student

Generators trong PHP với yield

PHP cung cấp phương thức truy cập vào các biến trong mảng mà không cần thiết phải lưu trữ toàn bộ dữ liệu đó trong không gian bộ nhớ

Tuy nhiên nếu sử dụng Generators cho phép chúng ta lợi về không gian bộ nhớ thì việc này cũng sẽ tiêu tốn thời gian xử lý hơn so với việc dùng vòng for thông thường.

<?php 
function getRange ($max = 10) {
	for ($i = 1; $i < $max; $i++) {
		yield $i;
	}
}

foreach (getRange(PHP_INT_MAX) as $range) {
	echo "Dataset {$range} <br>";
}

Big change với PHP 5.6

Phiên bản PHP 5.6 luôn được coi là 1 phiên bản PHP ổn định và cho đến thời điểm hiện tại PHP 5.6 vẫn được rất nhiều website trên thế giới sử dụng.

Dưới đây là 1 trong những thay đổi rất hữu ích của PHP 5.6 so với các phiên bản trước đó.

Biểu thức với Constant

Đối với phiên bản trước 5.6 bạn có thể khai báo

const A = 10;

const B = 20;

Nhưng Từ PHP 5.6 có thể khai báo như sau mà gặp bất kì lỗi lầm gì

const B  = A*2;

 

Biến thể Function và toán tử …

Trước giờ việc nạp chồng hàm trong PHP thì không có 1 khái niệm chính thức. Để thực hiện việc này bạn có thể thực hiện thông qua Magic Function (__call và __callStatic) hoặc func_get_args() tuy vậy với việc hỗ trợ Biến thể Function (hàm 3 dấu chấm) với toán tử dấu 3 chấm.

Toán tử này cũng là 1 sự lựa chọn thay thế cho func_get_args() theo gợi ý của php.net

<?php
function f($req, $opt = null, ...$params) {
    printf('$req: %d; $opt: %d; number of params: %d'."\n",
           $req, $opt, count($params));
}
f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);

Toán tử … cũng được sử dụng như là Argument unpacking

<?php
function add($a, $b, $c) {
    return $a + $b + $c;
}
$operators = [2, 3];
echo add(1, ...$operators);

Toán tử lũy thừa

Các phiên bản trước PHP 5.6 thì chúng ta phải sử dụng

 

Trước đây để tính lũy thừa : 

$a = pow(10,2);

Nhưng từ PHP 5.6 trở về sau chúng ta có thể làm như dưới đây

<?php
printf("2 ** 3 ==      %d\n", 2 ** 3);
printf("2 ** 3 ** 2 == %d\n", 2 ** 3 ** 2);
$a = 2;
$a **= 3;
printf("a ==           %d\n", $a);

Và kết quả là:

2 ** 3 ==      8
2 ** 3 ** 2 == 512
a ==           8

 

Ngoài ra còn nhiều nâng cấp khác trong phiên bản PHP 5.6 mà CodeTuTam không note trong bài này, các bạn có thể tham khảo thêm tại: https://www.php.net/manual/en/migration56.new-features.php

Trong phần tiếp theo chúng ta sẽ tiếp tục tìm hiểu những cải tiến mới của version PHP 7, một sự thay đổi có thể gọi là lột xác của PHP, giúp hiệu năng cũng như tốc độ xử lý nhanh lên đáng kể. Một cách khác đây cũng là một trong những Big change lớn của PHP trước khi ra mắt PHP 8 vào năm 2021.

Exit mobile version