Gợi ý kiểu php 5

PHP là ngôn ngữ kịch bản và nó không yêu cầu công việc phải gợi ý kiểu dữ liệu khi khai báo biến. From version 5. x trước đây PHP đã giới thiệu tính năng gợi ý kiểu dữ liệu cho biến hay còn gọi là kiểu gợi ý. Phiên bản PHP 7 giới thiệu thêm tính năng kiểu trả về áp dụng cho hàm

Xem lại khái niệm PHP 7

Ví dụ

chức năng nhân đôi (int $value)

{

trả về 2 * giá trị $;

}

Rất nhiều người cho rằng việc giới thiệu Nhập gợi ý trong PHP 7 là một sự cải tiến đáng chú ý nhất là khi lập trình viên phải viết các lớp (lớp) kế thừa các lớp khác hoặc triển khai một giao diện. Kế thừa (kế thừa) và giao diện đều yêu cầu tới sự chính xác trong khi khai báo kiểu dữ liệu cho tham số đầu vào hoặc kết quả trả về

Gợi ý kiểu php 5

Ảnh. Toán tử php7

Tuy nhiên, một số ý kiến ​​lại cho rằng việc này sẽ biến PHP thành một ngôn ngữ có cú pháp quá chặt chẽ giống như các ngôn ngữ Java hay C khiến mất đi sự linh hoạt trong ngôn ngữ này

Toán tử này ra đời để giải quyết một vấn đề rất hay gặp phải khi thiết lập chương trình đó là so sánh 2 số. Ví dụ, trong hàm so sánh ở bên dưới, chúng ta cần phải sắp xếp 2 biến $a và $b và giá trị của hàm này sẽ là 1 trong 3 giá trị 0, 1 hoặc -1

Ví dụ

hàm so sánh($a , $b) {

trả về ($a < $b) ? . (($a > $b) ? 1. 0);

}

Với cách viết cũ này sẽ chỉ hữu ích nếu như $a hoặc $b là các biến trực tiếp như ở trên. Tuy nhiên, trong trường hợp $a và $b không phải là biến thông thường mà là các biểu thức (biểu thức) phức tạp thì việc so sánh này cần phải tách ra thành nhiều dòng lệnh khác nhau. Trong PHP 7, so sánh này trở thành đơn giản chỉ với một dòng lệnh

$a <=> $b;

Gợi ý kiểu php 5

Ảnh. Toán tử PHP7

Toán tử Null Coalesce tạm dịch là toán tử hợp nhất null được giới thiệu để giúp việc gán giá trị cho một biến trở nên đơn giản hơn khi biểu thức gán có chứa biến với sự tồn tại chưa được xác định. Ví dụ ở bên dưới biến $a sẽ có giá trị là giá trị của biến $b hoặc mặc định nếu biến $b không tồn tại

$a = tập ($b) ? . "vỡ nợ";

Sử dụng toán tử hợp nhất null, đoạn mã trên sẽ trở nên rút ngắn hơn như sau

$a = $b ??

Đây là một số toán tử mới của PHP 7. Mình sưu tầm từ nhiều nguồn nên có sót gì các bạn để lại comment cho mình chỉnh sửa nhé.  

Mới đây, cộng đồng lập trình viên đang hối hả với cách sử dụng PHP 7, nó đang có rất nhiều đánh giá đánh giá cực như tốc độ xử lý nhanh hơn rất nhiều so với phiên bản xử lý PHP 5, một số kiểu mã mới được đưa ra

Sau khi PHP 5 ra mắt vào năm 2004, thì từ đó đến năm 2015 không có phiên bản nâng cấp lớn nào của PHP, chủ yếu là các bản sửa lỗi, cải thiện hiệu suất và một số tính năng mới theo hướng lập trình. . Trong bài này mình sẽ nói về 5 điểm mới trong PHP 7 mà theo mình là giá rất đáng

Gợi ý kiểu php 5

1. PHP 7 cho tốc độ nhanh hơn 2 lần PHP 5

Tốc độ trong PHP 7 được cải thiện đáng kinh ngạc khi nó nhanh hơn PHP 5 ít nhất 2 lần, nếu bạn biết tối ưu thì nó còn nhanh hơn nữa, có thể tăng lên 3-4 lần. Bảng benmark tốc độ dưới đây sẽ cho bạn thấy điều đó, khi test thử trên 2 CMS nổi tiếng đó là Drupal và WordPress, chưa cần tối ưu gì tốc độ cũng đã nhanh hơn 2 lần, đặc biệt hiện có 25% các trang web

2. PHP 7 cho phép khai báo kiểu biến

Tính năng này trong PHP7 được gọi là Tuyên bố Tyle, nó cho phép khai báo kiểu của biến thay vì PHP tự xác định kiểu như trước đây. Trước PHP 7, nó vẫn bị chê là ngôn ngữ không chặt chẽ, ngôn ngữ gõ yếu nhưng với tính năng này, bạn có thể sử dụng để ràng buộc biến vào một loại dữ liệu cụ thể giúp mã của mình dễ đọc hơn.

Ở PHP 5, bạn cũng có thể sử dụng gợi ý kiểu tính năng để chỉ định kiểu dữ liệu mong muốn của một tham số khi khai báo hàm, phương thức nhưng tất cả chỉ dừng lại khi khai báo. Khi bạn gọi hàm này, PHP sẽ kiểm tra xem các tham số có đúng với kiểu đã định sẵn hay không. Nếu không, biên dịch sẽ thông báo lỗi và chương trình sẽ bị tạm dừng, Gõ gợi ý của PHP 5 không có giới hạn nào chỉ được sử dụng trong hàm khai báo mà còn bị giới hạn 2 kiểu đó tên lớp hoặc 1 mảng thôi,

chức năng đăng ký (Sinh viên $student, mảng $classes) {

foreach ($classes as $class) {

tiếng vang "Đăng ký". $student->tên. " TRONG ". lớp $;

}

}

ghi danh ("tên", mảng ("lớp 1", "lớp 2")); . Đối số 1 được chuyển đến register() phải là một thể hiện của Student, chuỗi đã cho register($student,"class");

// Lỗi nghiêm trọng có thể bắt được. Đối số 2 được chuyển đến register() phải là kiểu mảng, chuỗi đã cho

ghi danh($student, array("lớp 1", "lớp 2"));

Ví dụ với hàm register() ở trên, chúng ta có thể chỉ định tham số đầu tiên là một đối tượng sinh viên và tham số thứ hai là một mảng các lớp. Nếu cố gắng truyền vào một chuỗi thay vì một đối tượng, bạn sẽ nhận được thông báo lỗi, nếu chúng ta chỉ truyền vào 1 lớp thay vì một mảng các lớp chúng ta cũng sẽ nhận được thông báo lỗi. Vui lòng xem thêm ví dụ bên dưới nữa

hàm stringTest(chuỗi $string) {

tiếng vang $chuỗi;

}

stringTest("chắc chắn là một chuỗi");

If as đoạn code on running on PHP 5 it will báo lỗi vì như mình đã nói ở trên, gõ gợi ý trong php5 chỉ cho phép 2 kiểu đó là lớp và mảng, truyền như trên là bạn truyền theo kiểu chuỗi rồi nghĩa là kiểu dữ liệu

Gợi ý loại vô hướng

Ở mục 2, mình có nói kiểu gợi ý trong PHP 5 chỉ có 2 kiểu đó là lớp và mảng nhưng trong PHP 7, nó đã được bổ sung thêm nhiều kiểu nữa đó là integer, float, string, bool. Với tính năng này, PHP đã không còn mang ngôn ngữ là ngôn ngữ không chặt chẽ nữa rồi, tuy nhiên để sử dụng được Gợi ý kiểu vô hướng bạn phải bật chế độ nghiêm ngặt chế độ, mình sẽ nói ở bên dưới, với Gợi ý kiểu vô hướng trong PHP . Nói gì thì nói

hàm getTotal(float $a, float $b) {

trả về $a + $b;

} getTotal(2, "1 tuan"); . 0) và chuỗi “1 tuần” được chuyển thành float(1. 0) nhưng bạn sẽ nhận được thông báo “Thông báo. Đã gặp phải một giá trị số không được định dạng tốt”

// trả về float(3)

getTotal(2. 8, "3. 2"); // chuỗi "3. 2" convert to float(3. 2)

// trả về float(6)

getTotal(2. 5, 1); . 0)

// trả về số float(3. 5)

Khi chế độ Strict Mode được bật, nếu tham số truyền vào là chuỗi, khi chúng ta khai báo là float, nó sẽ báo lỗi Fatal error. Lỗi loại chưa bắt được. Đối số 2 được chuyển tới getTotal() phải là kiểu float, chuỗi đã cho

Nếu bạn truyền vào một số kiểu int, PHP sẽ thực hiện một thủ tục được gọi là “mở rộng (mở rộng)” và nó sẽ tự động thêm vào “. 0” enterprise to float type

PHP 7 cho phép khai báo kiểu trả về

Nếu bạn đã từng lập trình với các ngôn ngữ như C, C++, Java,… thì chắc chắn bạn sẽ quen với cú pháp khai báo hàm đó là kiểu khai báo trả về của hàm trước tên hàm đó. Trong PHP 7 trở về đước thì nó không như thế mà bạn có thể trả về bất kỳ loại dữ liệu nào bạn muốn, điều này nhiều khi vô tình làm cho hàm của chúng ta không được chặt chẽ, do đó PHP 7 đã được bổ sung . Để chỉ kiểu trả về cho hàm, bạn chỉ cần đánh dấu báo thêm dấu hai chấm và theo sau là kiểu trả về ngay sau tên hàm, trước dấu trích dẫn, ví dụ

hàm getTotal(float $a, float $b). trôi nổi {

Lưu ý. Int không nghiêm ngặt trong PHP 7

Nếu chúng ta chỉ xác định kiểu trả về là kiểu int nhưng bật chế độ nghiêm ngặt thì coi như chúng chưa chỉ định kiểu trả về, do đó nếu khai báo kiểu trả về là int thì bạn cần khai báo chế độ nghiêm ngặt (

nghiêm ngặt.  

Nếu trong hàm bạn chỉ định kiểu dữ liệu của biến là float nhưng kiểu trả về là kiểu int và bật chế độ nghiêm ngặt chế độ thì PHP sẽ báo lỗi, do đó bạn cần phải ép kiểu, hãy xem ví dụ sau

khai báo (strict_types=1);

hàm getTotal(float $a, float $b). int {

// trả về $a + $b; . Lỗi loại chưa bắt được. Giá trị trả về của getTotal() phải là kiểu số nguyên, float trả về return (int)($a + $b);

}

getTotal(2. 5, 1); . 0) and return int(3)

Đăng ký ngay để khai phá các công thức tối ưu hóa PHP & PHP 7

3. new task

nhà điều hành tàu vũ trụ

PHP 7 cung cấp thêm một số toán tử mới, đầu tiên đó là toán tử tàu vũ trụ (< = >), trông nó giống cái tàu con thoi nên họ đặt tên thay thế. Đây là toán tử so sánh 2 giá trị, để hiểu rõ hơn mời bạn xem ví dụ sau

$compare = 2 <=> 1

2 < 1 ?

2 = 1?

2 > 1?

Toán tử này viết bắt đầu bắng dấu nhở hơn, tiếp là dấu bằng và dấu lớn hơn (<=>), toán tử sẽ kiểm tra nếu 2 giá trị bằng nhau nó sẽ trả về 0, nếu giá trị bên trái nhỏ hơn giá trị bên phải, trả về -1, còn giá trị bên trái lớn hơn bên phải nó sẽ trả về 1

Toán tử hợp nhất Null

Một toán tử mới khác đó là Null Coalesce, rất hữu ích khi bạn muốn kiểm tra một giá trị có phải là NULL hay không, toán tử này sẽ trả về giá trị bên trái nếu nó không phải NULL, ngược lại nó sẽ trả về

$name = $firstName ??

At ví dụ trên, biến $name sẽ nhận giá trị của biến $firstName nếu nó không NULL, đảo ngược biến $name sẽ nhận giá trị “Khách”

Trước PHP7, để làm thế này bạn phải viết như sau

nếu (. trống($firstName)) $name = $firstName;

khác $name = "Khách";

Toán tử này còn được sử dụng với nhiều giá trị, trong ví dụ sau nó sẽ kiểm tra từ bên trái qua phải xem giá trị nào không NULL thì nó sẽ lấy giá trị đó gắn cho biến $name

$name = $firstName ??

4. CSPRNG dành cho người dùng dễ dàng

Easy User-land CSPRNG là cái gì?

User-land là một khái niệm liên quan đến không gian làm việc của ứng dụng, phần mềm với các nhân của hệ thống và được bảo vệ bởi các quyền riêng, nó chỉ theo dõi các đoạn mã chạy bên ngoài của hệ thống ví . PHP 7 sử dụng một khái niệm đó là CSPRNG (Cryptographically Secure PseudoRandom Number Generator)

Bạn có thể thấy trong PHP5 có một số hàm ngẫu nhiên như rand(), đây là hàm tạo ra các số ngẫu nhiên, tuy nhiên user-land của hàm này chỉ nằm trong phạm vi của PHP mà thôi, do đó nó có thể dễ dàng . Trong PHP 7, những hàm ngẫu nhiên này sử dụng giao diện của hệ thống cho công việc ngẫu nhiên, nghĩa là user-land của nó không còn nằm trong PHP nữa mà nằm trong nhân của hệ thống, như vậy cho dù PHP có bị hack thì cũng rất

Ngoài ra PHP 7 còn có thêm 2 hàm Random mới đó là Random_int và Random_bytes

Byte ngẫu nhiên

Khi sử dụng Random_bytes, bạn cung cấp một tham số duy nhất đó là độ dài của chuỗi sẽ được trả về, hàm này sẽ trả về một chuỗi chứa các byte ngẫu nhiên được mã hóa hoàn toàn. Nếu bạn sử dụng hàm bin2hex(), bạn sẽ nhận được các định dạng số như số phân tích

$bytes = Random_bytes(5);

var_dump(bin2hex($byte));

Những số này không phải là số nguyên, do đó nếu bạn muốn bạn phải sử dụng hàm random_int

Random_int

Khi sử dụng hàm này, bạn phải cung cấp 2 tham số min và max, nó sẽ trả về các tham số ngẫu nhiên trong khoảng min, max này, ví dụ:

Nếu bạn vẫn đang sử dụng hàm rand() của PHP5, hãy chuyển sang hàm random_int để được bảo mật hơn

5. Xử lý lỗi

Tính năng tiếp theo mà theo mình là rất hữu ích trong PHP7 đó là Xử lý lỗi. Fatal Error là lỗi rất phổ biến trong PHP5 và được coi là lỗi chết người và chương trình buộc buộc phải dừng việc biên dịch lại. Đôi khi nó còn xuất hiện màn hình xóa trắng rất dễ gây nhầm lẫn với người dùng. Trong PHP 7, xử lý ngoại lệ được cải thiện, một ngoại lệ sẽ sinh ra khi xảy ra lỗi nghiêm trọng, trong PHP 5 thì nó chỉ dừng chương trình lại thôi còn PHP 7 ngoài việc dừng chương trình nó còn tạo ra ngoại lệ

Trong PHP 7, Xử lý lỗi và xử lý ngoại lệ được áp dụng một lớp mới đó là Throwable, chi tiết về cái này các bạn search Google nhé

Đăng ký ngay để khai phá các công thức tối ưu hóa PHP & PHP 7

Loại lỗi

Một tính năng mới trong công việc xử lý lỗi đó là Type Error. Đây là một ví dụ của lớp Throwable và nó sẽ sinh ra khi tham số truyền vào hàm không đúng với kiểu dữ liệu đã khai báo, mời bạn xem ví dụ dưới đây để hiểu rõ hơn

hàm thêm(int $left, int $right) {

trả về $trái + $phải;

}

cố gắng {

echo add('trái','phải');

} bắt (\TypeError $e) {

echo $e->getMessage(), "\n";

// Đối số 1 được truyền cho add() phải là kiểu số nguyên, chuỗi đã cho

}

Lỗi phân tích cú pháp

Đây cũng là một ví dụ của Layer Throwable và nó sẽ sinh ra khi bạn bao gồm/yêu cầu tệp trong PHP hoặc khi sử dụng hàm eval() có chứa lỗi cú pháp, bạn xem ví dụ sau sẽ hiểu

cố gắng {

$result = eval("var_dup(1);");

} bắt (\Lỗi $e) {

echo $e->getMessage(), "\n";

//Gọi hàm chưa xác định var_dup()

}

cố gắng {

yêu cầu 'tệp có lỗi phân tích cú pháp. php';

} bắt (ParseError $e) {

echo $e->getMessage(), "\n";

// lỗi cú pháp, kết thúc tệp không mong muốn, mong đợi ',' hoặc ';'

}

Một vấn đề khá phổ biến đó là khi chúng ta thiết kế trang đăng nhập kế tiếp, và bạn muốn kéo bất kỳ tệp nào vào đó sau khi người dùng đăng nhập, nếu như tệp này có vấn đề thì nó sẽ thông báo cho chúng ta biết tệp này . Tóm tắt Lỗi và Ngoại lệ trong PHP 7 đã được cải thiện rất nhiều để giúp các lập trình viên viết mã hiệu quả hơn

Kết luận

Có rất nhiều tính năng mới được thêm vào PHP 7 nhưng mình không thể liệt kê hết trong bài viết này được, bạn có thể tự tìm kiếm Google hoặc đọc tài liệu PHP Manual. Có thể kể ra một vài cái hay như

PHP 7 cho phép tạo ra các biểu tượng cảm xúc tiêu chuẩn của Unicode như Unicode

Ngoài ra, PHP 7 còn loại bỏ khá nhiều hàm cũ như các hàm mysql, exec, do đó nếu bạn đang nâng cấp từ PHP 5 lên PHP 7 thì hãy cẩn thận một số hàm cũ không được sử dụng, các hàm này bạn có thể . Bài dài rồi, mình xin kết thúc tại đây, cảm ơn bạn đã đọc đến đây. D, có gì cần giải đáp thì liên hệ mình qua Facebooknhé