Hướng dẫn php8

  • Trang chủ
  • Hướng dẫn cài đặt php 8.0 với xampp trên windows 10

Đây là cách cài đặt php đơn giản nhất mà mình biết trên windows. Thường mình hay sử dụng xampp hoặc wampp hay easyphp thì việc cài đặt php hay mysql nó có sẵn trong các gói cài đặt của các webserver này. Bạn chỉ cần thao tác cài đặt thông thường thì có thể dử dụng được php 8.0 hay mysql.

Nội dung chính

  • WordPress php 8
  • Php 8 wordpress
  • Php 8 wordpress
  • Laravel php 8
  • Php 8 laravel
  • Nâng cấp PHP 8
  • Laravel PHP 8 là gì? Cách nâng wordpress lên php 8.0

PHP 8.0 là một bản cập nhật lớn của ngôn ngữ PHP. Nó chứa nhiều tính năng và tối ưu hóa mới bao gồm named arguments, JIT, union types, attributes, constructor property match expression, promotion, nullsafe operator và các cải tiến trong kiểu hệ thống, xử lý lỗi và tính nhất quán.

WordPress php 8

Hướng dẫn nâng cấp PHP 8 cho website WordPress

Chạy các trang Web của bạn trên PHP 7.1 hoặc phiên bản thấp hơn sẽ khiến chúng gặp rủi ro về các vấn đề bảo mật. Không chỉ vậy, bạn cũng sẽ bỏ lỡ các cải tiến về hiệu suất của hệ thống trong các phiên bản PHP mới hơn. PHP 8 là một phiên bản PHP chính vừa được phát hành, có nghĩa là nó sẽ giới thiệu một số thay đổi đột phá, cũng như nhiều tính năng mới và cải tiến hiệu suất.

Bên cạnh những thay đổi đột phá, PHP 8 cũng mang đến một loạt các tính năng mới như trình biên dịch JIT (JIT Compiler), union typesattributes, v.v.

Hướng dẫn php8

Php 8 wordpress

PHP là một hệ thống lớn cần được sửa chữa và cải tiến liên tục. Mỗi phiên bản mới đều đi kèm với các bản sửa lỗi bảo mật trên các phiên bản trước. Vì thế, bạn nên sử dụng các phiên bản PHP mới nhất để ngăn chặn các cuộc tấn công mạng và bảo vệ tài sản, dữ liệu của bạn.

Php 8 wordpress

Với bản chất được định kiểu động của PHP, có rất nhiều trường hợp mà kiểu liên hợp (union types) có thể hữu ích. Các union types là một tập hợp của hai hoặc nhiều kiểu cho biết rằng một trong hai kiểu đó có thể được sử dụng.

public function foo(Foo|Bar $input): int|float;

Lưu ý rằng void không bao giờ có thể là một phần của union type, vì nó chỉ ra ‘không có giá trị trả lại nào cả’. Hơn nữa, nullable có thể được viết bằng cách sử dụng |null, hoặc bằng cách sử dụng ký hiệu ?:

public function foo(Foo|null $foo): void;

public function bar(?Bar $bar): void;

Laravel php 8

Truyền tham số theo tên gọi – function PHP 8

Việc một function có nhiều tham số (với mình là từ 3 tham số trở nên), có thể khiến developer lúng túng khi sử dụng vì không nhớ rõ ý nghĩa của từng tham số, cũng như thứ tự truyền của chúng.

Ví dụ, function mkdir() (function giúp tạo thư mục) trong PHP có 4 tham số lần lượt là:

  • $directory: Bắt buộc, là đường dẫn để tạo thư mục
  • $permissions: Không bắt buộc, là khả năng truy cập vào thư mục (kiểu 0777, hay 0655), mặc định là 0777.
  • $recursive: Không bắt buộc, có cho phép tạo thư mục con ngay cả khi thư mục cha không tồn tại (cho phép tạo kiểu đệ quy), mặc định là false.
  • $context: Không bắt buộc, còn ý nghĩa là gì thì mình cũng chẳng hiểu lắm, chưa bao giờ dùng đến tham số này.

Các vấn đề mà một developer có thể gặp phải khi sử dụng mkdir() đó là:

  • Đôi khi không nhớ rõ thứ tự của 2 tham số $permissions và $recursive, không biết tham số nào được viết trước.
  • Nếu muốn đổi giá trị của tham số $recursive từ false thành true, developer buộc phải truyền cả tham số $permissions (vì $permissions đứng trước $recursive).

Cả hai vấn đề trên đều gây bất tiện khi sử dụng, để khắc phục nó, thì PHP cung cấp cú pháp mới cho phép truyền tham số theo tên gọi:

1

2

3

4

5

6

7

8

9

mkdir('./hello/world', 0777, true);

mkdir(recursive: true, directory: './hello/world');

mkdir('./hello/world', recursive: true);

Lưu ý:
– Đây chỉ là cú pháp mới mà PHP 8 cung cấp để tiện sử dụng hơn khi cần, còn bạn vẫn có thể sử dụng cú pháp cũ bình thường trên phiên bản PHP 8 này.

– Tên tham số bạn không được phép “tự nghĩ ra” mà phải tuân theo tài liệu của PHP. Như trong ví dụ trên, recursive và directory là 2 tham số mà mình buộc phải tuân theo tài liệu mà PHP cung cấp.

Php 8 laravel

Trình biên dịch JIT trong PHP 8

Mặc dù không phải lúc nào là ưu tiên hàng đầu của webstie. Mình đã thực hiện các bài test của riêng mình trên các ứng dụng web ngoài đời thực và có vẻ như JIT không tạo ra nhiều khác biệt. Hiểu nhanh thì JIT (Just In Time) là một kỹ thuật được PHP tích hợp vào việc biên dịch code PHP thành mã máy, giúp PHP 8 đạt được hiệu năng cao gấp 1,5 – 2 lần so với PHP 7. Nhưng đừng vội mừng, hãy xem biểu đồ dưới đây và mình sẽ giải thích cho bạn hiểu:

  • bench.php, micro_bech.php, N-body, Mandelbrot đều là các bài test trên ứng dụng PHP đơn giản.
  • Các bài test còn lại, lần lượt test trên các ứng dụng PHP có độ phức tạp tăng dần.
  • Đường màu đen, kẻ dọc ở biểu đồ trên là ngưỡng tối đa khi PHP không sử dụng JIT
  • Hướng dẫn chỉnh sửa widget wordpress

Ứng dụng PHP đơn giản khi áp dụng JIT mới có hiệu năng cao, còn các ứng dụng PHP phức tạp, sử dụng các framework, cms phổ biến như WordPress, Symfony (Chắc laravel cũng không ngoại lệ) thì sử dụng JIT lại không đem lại nhiều lợi ích. Thậm chí như trường hợp của Symfony khi áp dụng JIT còn làm ứng dụng chạy chậm hơn so với lúc không áp dụng.

Php8

Cập nhật khác trên PHP 8

ột số cập nhật điển hình khác trên PHP 8 như sau:

  • Thay vì sử dụng PHPDoc để chú thích, PHP 8 đã cung cấp thêm cấu trúc metadata.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

class PostsController

{

    public function get($id) { }

}

class PostsController

{

    #[Route("/api/posts/{id}", methods: ["GET"])]

    public function get($id) { }

}

  • Toán tử @ vốn để “câm lặng lỗi” không còn được sử dụng ở PHP 8.

1

2

3

4

5

6

@unlink('hello/world');

  • Cụm try {} catch () {} có thể không cần biến $exception trong catch.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

try {

    1/0;

} catch (Exception) {

    die('Something wrong');

}

try {

    1/0;

} catch (Exception) {

    die('Something wrong');

}

  • Cho phép dấu phẩy ở cuối danh sách tham số.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

class Uri

{

    private function __construct(

        ?string $scheme,

        ?string $user,

        ?string $pass,

        ?string $host,

        ?int $port,

        string $path,

        ?string $query,

        ?string $fragment

    ) {

        ...

    }

}

class Uri

{

    private function __construct(

        ?string $scheme,

        ?string $user,

        ?string $pass,

        ?string $host,

        ?int $port,

        string $path,

        ?string $query,

        ?string $fragment,

    ) {

        ...

    }

}

  • Bổ sung một số function mới str_contains(), str_starts_with(), str_ends_with()

Hướng dẫn nâng cấp lên php 8

Để nâng cấp PHP 8 cần chuẩn bị những gì

Phiên bản PHP 8.0, nó có thể yêu cầu lập trình viên duyệt code lại khi có thay đổi. Vì thế, nhà đồng sáng lập, đồng thời cũng là chuyên gia tư vấn chính của PHP Consulting Company, Stefan Priebsch khuyên người dùng phải chuẩn bị nhiều trước khi chuyển đổi, do một số tính năng cũ sẽ bị loại bỏ khỏi phiên bản 8.0.

Điển hình như phiên bản PHP 8.0 không sẵn có các thành phần PHP-PSR, Phalcon 4, ionCube 10, Snuffleupagus, Memcache và SourceGuardian.

Một số phần mềm không tương thích với PHP 8.0:

  • DSO: Mặc dù, Hosting cPanel hỗ trợ PHP8 nhưng trình xử lý DSO lại không được cPanel hỗ trợ với PHP 8.0.
  • Các phần mở rộng của XMLRPC: Đã được chuyển sang PECL.

Điều kiện nâng cấp PHP 8

  • Hosting, hosting wordpress sử dụng cPanel/ DirectAdmin và được trang bị tính năng cho phép tùy chọn phiên bản PHP (Select PHP Version).
  • Tích hợp sẵn PHP 8.
  • Theme và plugin của bạn tương thích tốt với PHP 8.
  • Website của bạn đã được update lên phiên bản WordPress 5.6 hoặc cao hơn. Các phiên bản WordPress thấp hơn chưa hỗ trợ PHP 8.

Nâng cấp PHP 8

Đầu tiên, các bạn truy cập vào cPanel/ DirectAdmin, tìm mục Select PHP Version và click vào đó.

Trong tab Extensions, các bạn lựa chọn PHP 8 trong mục Current PHP Version rồi click vào nút Set as current. Tiếp theo, thiết lập các extension (module) giống như hình bên dưới.

Extension có thể thay đổi tùy theo từng nhà cung cấp. Tuy nhiên, hãy kích hoạt hết những extension tương tự mà bạn thấy xuất hiện ở trên.

Lưu ý: các thiết lập module kể trên là tối ưu nhất dành cho mã nguồn WordPress, chúng chưa được kiểm nghiệm trên các mã nguồn khác.

Chuyển qua tab Options, các bạn thiết lập các thông số

Các thông số tối đa của memory_limitpost_max_size và upload_max_filesize có thể thay đổi tùy theo nhà cung cấp hosting. Nếu bạn được phép tùy chỉnh thông số nào, hãy cố gắng thiết lập nó giống như hình bên trên. Truy cập website của bạn và kiểm tra xem giao diện cũng như các tính năng đã hoạt động bình thường hay chưa. Nếu rồi thì có nghĩa là các bạn đã nâng cấp PHP 8 thành công. Nếu có lỗi xảy ra, các bạn hãy kiểm tra error_log để xem theme hay plugin nào không tương thích. Trong trường hợp không thể khắc phục, các bạn chỉ cần chuyển về phiên bản PHP cũ là được.

Như vậy đã xong Sieutocviet đã hướng dẫn bạn nâng cấp PHP 8, để xem các bài khác để xây dựng thêm cho website của mình những công nghệ mới nhất:

Khắc phục lỗi SSL

Laravel PHP 8 là gì? Cách nâng wordpress lên php 8.0