Bạn chỉ cần ngồi yên, mọi tin tức "hot" nhất về PHP để tôi lo!

Xin chào các bạn, đây là PHP 8.0.0 Beta 1, phát thanh từ Đài Sun* News. Sau đây là tổng hợp cho các bạn những tin tức hấp dẫn nhất về cộng đồng PHP trong thời gian gần đây!

Hello, World!

Trong số lần này, chúng tôi sẽ tổng hợp các tin tức mới nhất về các hoạt động trong cộng đồng PHP trên thế giới trong thời gian gần đây: Thông tin về các dự án, thư viện hữu ích, các bài viết hay nên đọc và cùng ôn lại một số kiến thức về PHP.

PHP 8.0

Hiện tại là tháng 8 và thông tin đầu tiên đó là về PHP 8.0.

Vào ngày 6/8 vừa qua, PHP Core Team đã release phiên bản PHP 8.0.0 Beta 1 và đưa PHP 8.0 vào trạng thái "Feature freeze", tức là sau bản Beta 1 này, sẽ không có thêm chức năng mới nào được thêm vào PHP 8.0, cộng đồng sẽ tập trung test chức năng hiện có và fix bug. 

Tiếp sau bản release này là các bản Beta 2, Beta 3, RC (Release Candidate) 1-5 và dự kiến PHP 8.0 sẽ được release vào cuối tháng 11 năm 2020. 

Tham khảo lịch trình release PHP 8.0 tại đây

Có rất nhiều tính năng mới ở phiên bản PHP 8.0, có thể kể đến như:

  • PHP JIT, just in time, hứa hẹn sẽ mang đến những cải thiện đáng kể về performance
  • Nullsafe operator, bên cạnh coalescing operator (??), ternary operator (?:), operator mới (?->) thay thế cho các câu lệnh if/else sẽ giúp các đoạn code gọn gàng hơn rất nhiều
  • Named arguments, array_fill(start_index: 0, num: 100, value: 50), đây có lẽ là chức năng mang đến nhiều sự chia rẽ trong cộng đồng PHP gần đây :D và cuối cùng thì nó đã được đa số các thành viên PHP Team chấp nhận và đã được implement trên phiên bản PHP 8.0.
  • Attributes, thường còn được biết với tên annotation, nếu bạn đã từng dùng Symfony Framework hay Doctrine ORM, với tính năng này sẽ giúp code dễ đọc và dễ thực hiện hơn rất nhiều so với việc phải viết code trong docblock comment? Đây cũng là tính năng tốn nhiều giấy mực của cộng đồng khi cân nhắc chọn lựa giữa các cú pháp @@, #[], <<>>...
  • Match expression, phiên bản ngắn gọn và hiện đại và lợi hại hơn của switch
  • ext-json, extension JSON (json_encode và json_decode) sẽ được compile cùng PHP core và được enable sẵn theo mặc định, thay vì phải cài đặt extension một cách thủ công

Và còn nhiều feature mới khác nữa, chi tiết các bạn có thể đọc bài viết này.

Ngoài PHP 8.0, thì phiên bản PHP 7.4.9 cũng đã được release. Chi tiết về các bản release xem tại đây.

Kể từ khi PHP 7 ra đời vào cuối năm 2015 thì đến nay các phiên bản PHP 7.0, PHP 7.1 đều đã end-of-life, nếu có thể hãy upgrade lên PHP 7.3 hoặc PHP 7.4. Chi tiết về vòng đời các phiên bản PHP xem tại đây

Ngược dòng thời gian thì PHP nay đã hơn 25 tuổi. Phiên bản đầu tiên ra đời vào ngày 1995-06-08 với tên gọi "Personal Home Page Tools", đến nay tên gọi đã thay đổi thành "PHP: Hypertext Preprocessor". Cùng nhìn lại một số mốc đáng chú ý với PHP Timeline

Tools

Cùng tìm hiểu qua một số công cụ, thư viện được ra mắt hoặc release phiên bản mới trong thời gian gần đây.

  • Composer 2.0 Alpha 3: Chuẩn bị cho Major release Composer 2.0 với cải thiện đáng chờ đợi về performance, tốc độ download, install packages. Xem thêm tại đây.
  • beyondcode/expose :Công cụ cho phép "expose localhost to internet", open source tool thay thế cho ngrok, được viết bằng PHP cùng với thư viện ReactPHP
  • pestphp/pest: Viết unit test theo phong cách của JavaScript, được xây dựng dựa trên PHPUnit và tham khảo cú pháp từ package facebook/jest
  • FriendsOfPHP/pickle: Hỗ trợ cài đặt PECL extensions dễ dàng hơn, xây dựng dựa trên Composer. Và theo kế hoạch sẽ tích hợp với Composer từ phiên bản Composer >= 2.1
  • doctrine/migrations 3.0.0
  • phpsandbox.io :  Test PHP online, có support cài đặt packages bằng Composer, share online. Tương tự JSFiddle
  • PHP Security Checker Docker image: Docker image để chạy Symfony CLI security:check, check security cho các ứng dụng PHP

Videos

Dưới đây là một số videos đáng chú ý trong các sự kiện, hội nghị thường niên về PHP trong năm 2020

  • PHP Russia 2020 Online hội nghị PHP Russia 2020 được tổ chức online với focus chính vào PHP 7 engine, PHP, SQL performance và Security.
  • Laracon EU Online 2020 Laravel Conference EU 2020 Online, đúng như cái tên hội nghị bao gồm các chủ đề chủ yếu liên quan đến Laravel như là về CSRF và SameSite cookie, Exceptions Handler, View Components, OpenAPI, deploy với Ansible,...
  • Laracon Online 2020 ngoài ra trong tháng 8 dự kiến hội nghị chính thức của Laravel sẽ được tổ chức vào ngày 26, danh sách chủ đề đã được cập nhật trên trang chủ, mời các bạn chú ý đón xem.

Bài viết hay đáng chú ý

Hiểu rõ hơn về PHP Type System
PHP là ngôn ngữ dynamically typed, điều duy nhất bạn có thể làm là type casting trong code. Tuy nhiên đến phiên bản PHP 7 thì việc khai báo kiểu dữ liệu cho function và method đã được support. Điều này không có nghĩa là PHP trở thành ngôn ngữ statically typed, mà chỉ giúp việc type hinting có thể được statically analyze (analyze trước khi chạy) và PHP vẫn support dynamic type và mixed types.

Để hiểu rõ hơn về PHP Type System, chúng ta sẽ cùng đi qua các phần:
    - Các loại kiểu dữ liệu trong PHP
    - Các operation liên quan đến kiểu dữ liệu
    - Union types
    - Type juggling
    - Type modes (strict mode)

Một số mẹo để viết clean code trong Laravel [twitter.com/samuelstancl]
Trong thread này, tác giả đưa ra một số practice và example code để viết clean code trong Laravel như:
  - Sử dụng lookup table thay cho elseif
  - Return early để giảm nesting level
  - Không khái báo các biến thừa khi bạn có thể return trực tiếp
  - Khai báo biến khi nó làm code dễ đọc hơn
  - Sử dụng single-use trait
  - Sử dụng query scope
  - ...
Và còn nhiều practices khác nữa, đọc và tham khảo kinh nghiệm thôi.

Tại sao lập trình viên cần có tư duy về testing [viblo.asia/u/tangumiho]
Trích từ bài viết:  Đây là câu hỏi mà chắc hẳn rằng không ít người băn khoăn trăn trở? Dev: "Đã code sấp mặt rồi lại còn ngồi tư duy Test?" Tester: "Làm Dev mà có một chút tư duy về Test nữa thì có phải là perfect không?"
Theo sự thống kê và trải nghiệm cho thấy rằng: Mối quan hệ giữa Dev và Test dường như không nhiều chứa hai chữ "hòa bình" :D Bên nào rồi cũng cho là mình đúng, mình không sai, luôn mất bình tĩnh và nâng cao "cái tôi".
Vì vậy, chúng ta hãy cùng nhau tìm hiểu xem "Vì sao lập trình viên cần có tư duy về Testing" nhé.

2020 thập kỷ mới rồi, tôi không biết bạn là ai nhưng hãy học cách test your code!

Ôn lại Laravel với series bài viết Laravel Beauty 
Có thể một số đoạn code đã cũ, nhưng tư tưởng chung thì vẫn thế, kiến thức nền tảng luôn là quan trọng. Series bài viết rất đáng đọc về Laravel.

Tìm hiểu về Serverless LAMP stack với AWS [aws.amazon.com/blogs]
Series bài viết về Serverless dành cho PHP developers từ blog của AWS. Loạt bài viết sẽ giải thích cách áp dụng serverless với PHP, giới thiệu các tools và frameworks hỗ trợ, kiến trúc serverless trên AWS và hướng dẫn thực hành với Laravel hoặc Symfony Framework.

Chủ đề khác

Học lập trình theo phong cách phù thuỷ [twitter.com/@b0rk]
Bạn có muốn trở nên thực sự giỏi trong công việc mình đang làm? Tôi cũng thế. Mẫu truyện tranh nhỏ từ tác giả Julia Evans cách mà tác giả đã học, các kỹ năng cần thiết như:
  - Cách đặt câu hỏi
  - Cách đọc code
  - Các kỹ năng debug
  - Cách thiết kế phần mềm
  - ...
Hy vọng có thể giúp ích được cho các bạn mới bắt đầu.

Ôn lại một số kiến thức về lập trình, máy tính [twitter.com/@b0rk]

Học Regular Expression và cuộc đời bạn sẽ bớt khổ [viblo.asia/u/chungminhtu]

Có thể bạn đã biết

Hãy cùng ôn lại một số kiến thức về PHP. Cho chúng tôi thấy ý kiến của bạn trong phần comment nhé! 

1. Đoạn code sau đây có hợp lệ không, vì sao?

=> https://git.io/JJPPF

<?php

$options = [1, 2, 3];

foreach ($options as $option) try {

    if ($option == 2) {

        throw new \Exception('2 is missing!!');

    }

    echo $option . PHP_EOL;

} catch (\Exception $ex) {

    echo "Exception: ", $ex->getMessage(), "\n";

}

2. Đoạn code sau có vấn đề gì không? Output sẽ như thế nào?

=> https://git.io/JJPXT

<?php

$values = [1, 2, 42, 3];

foreach ($values as $value) {

    switch ($value) {

        case 1:

            echo 'Number one!' . PHP_EOL;

            break;

        case 42:

            echo 'Life is 42' . PHP_EOL;

            continue;

        default:

            echo 'Value is ' . $value . PHP_EOL;

            break;

    }

}

#PHP