PHP Digest # 205 (June 1 - 15, 2021)





A selection of fresh news and materials from the PHP world. In release: the first alpha of PHP 8.1.0, Composer 2.1, Symfony 5.3, and other releases. An overview of the new proposals for PHP 8.1: Partial Function Application, pipe operator, readonly properties. Plus a portion of useful tools, articles, videos and podcasts.



Enjoy reading!



news



  • PHP 8.1.0 alpha 1



    - PHP 8.1. . 25 .



    20 , . :



    • Enum RFC;
    • never



      RFC;
    • RFC;
    • RFC;
    • RFC;
    • float



      int



      , RFC;
    • Serializable



      RFC;
    • 0o



      RFC;
    • $GLOBALS RFC;


    php.watch/versions/8.1.



  • PHP 8.0.7, PHP 7.4.20



    .



  • PhpStorm 2021.2



    , . , .

    : PHP 8.1, Extract Method, .



  • Composer 2.1.0



    reinstall



    , . .



  • packagist.org PHP-



    Composer, Jordi Boggiano, PHP.



    , packagist.org/php-statistics.



    , , , symfony/console/php-stats.



  • PHP Russia 2021



    28 . β€” habr , , .



    : php_digest.





PHP Internals



  • [RFC] Partial Function Application



    RFC First-class callable syntax.



    β€” . ...



    , ?



    β€” .



    :

    1. $func = some_func(...)



      β€” . , .
    2. $func = some_func(1, 2, ?, 5)



      β€” , .
    3. $func = any_func($all, $params, ...)



      β€” , . , .


  • [RFC] Pipe Operator v2



    , - .



    :



    array_filter(array_map('strtoupper', str_split(htmlentities("Hello World"))), fn($v) => $v != 'O');
    
          
          





    :



    $result = "Hello World"
        |> htmlentities(?)
        |> str_split(?)
        |> array_map(strtoupper(?), ?)
        |> array_filter(?, fn($v) => $v != 'O');
    
          
          





  • [RFC] Pure intersection types



    , . audio PHP Internals News #88 George Peter Banyard, RFC.



  • [RFC] Readonly properties 2.0



    RFC readonly .



    readonly



    . .



    class Test {
        public readonly string $prop;
    
        public function __construct(string $prop) {
            // Legal initialization.
            $this->prop = $prop;
        }
    }
    
    $test = new Test("foobar");
    // Legal read.
    var_dump($test->prop); // string(6) "foobar"
    
    // Illegal reassignment. It does not matter that the assigned value is the same.
    $test->prop = "foobar";
    // Error: Cannot modify readonly property Test::$prop
    
          
          







    constructor property promotion PHP 8.0, :



    class User {
        public function __construct(
            public readonly string $name
        ) {}
    }
    
    $user = new User('Roman');
    echo $user->name; // Ok
    $user->name = 'Nikita'; // Error
    
          
          





  • [RFC] Make reflection setAccessible() no-op



    , ->setAccessible(true)



    .



    Marco Β«OcramiusΒ» Pivetta , ReflectionProperty



    ReflectionMethod



    , setAccessible(true)



    .



    class Foo { private $bar = 'a'; }
    
    (new ReflectionProperty(Foo::class, 'bar'))->getValue();
    
          
          















Symfony







Laravel







Yii













/








Subscribe to the PHP Digest Telegram channel .



If you liked the digest, please give it a plus - this is very motivating to keep doing it.



Did you spot a mistake or typo? Inform in a personal habr or telegram .



You can send the link through the form or simply by writing to me in a telegram .

Search for links in all digests

← Previous issue: PHP-Digest # 204








All Articles