PHPダイジェスト#197(2021年1月11日-25日)



ニュースや資料へのリンクを含む新鮮なセレクション。リリースでは:配列キーとしてのオブジェクトおよびPHP 8.1用の他のRFC提案、PHPでWebAssemblyを実行、配列内の衝突、便利なツール、記事、ビデオ、PHPライブダイジェストの一部について



読書を楽しむ!









ニュースとリリース





PHP内部



  • [RFC] Object keys in arrays

    .



    $obj1 = new stdClass;
    $obj2 = new stdClass;
    
    $array = [];
    $array[$obj1] = 1;
    $array[$obj2] = 2;
    
    var_dump($array[$obj1]); // int(1)
    var_dump($array[$obj2]); // int(2)
    
          
          





    SplObjectStorage



    WeakMap



    , . . , array_*



    .



    , , , .



    , RFC Enumerations . . .
  • [RFC] Object scoped RNG Implementations

    rand()



    mt_rand()



    (seed) srand()



    . - .



    API , .

    $seed = 1234;
    $rng = new RNG\MT19937($seed);
    $array = [1, 2, 3, 4, 5];
    
    shuffle($array, $rng); //   
    
          
          



    , , , : random_bytes() random_int().

  • [RFC] var_representation(): readable alternative to var_export()

    var_export()



    , , . RFC array( )



    [ ]



    .



    var_representation($value, int $flags=0) :string



    , var_export()



    .



    brick/varexporter.
  • [RFC] Change Default mysqli Error Mode

    mysqli ( PHPLive#3 ) : . : mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);







    mysqli CodeIgniter WordPress.
  • [RFC] Dump results of expressions in `php -a`php -a



    .
  • PHP 8.1: What's New and Changed — php.watch , PHP 8.1. RFC - .




  • fabpot/local-php-security-checker — composer.json . FriendsOfPHP/security-advisories.



    GitHub action Docker- oxcom.

  • funivan/PhpClean — PhpStorm, , , , , . .
  • wasmerio/wasmer-php — WebAssembly PHP. wasm- PHP. Rust, wasm PHP. . .
  • temporalio/sdk-php — PHP-SDK temporal.io – , , , , -.



    .. - :
    #[Workflow\WorkflowInterface]
    class LoopWorkflow
    {
        private array $values = [];
        private array $result = [];
        private $simple;
    
        public function __construct()
        {
            $this->simple = Workflow::newActivityStub(
                SimpleActivity::class,
                ActivityOptions::new()->withStartToCloseTimeout(5)
            );
        }
    
        #[SignalMethod]
        public function addValue(
            string $value
        ) {
            $this->values[] = $value;
        }
    
        #[WorkflowMethod(name: 'LoopWorkflow')]
        public function run(
            int $count
        ) {
            while (true) {
                yield Workflow::await(fn() => $this->values !== []);
                $value = array_shift($this->values);
    
                $this->result[] = yield $this->simple->echo($value);
    
                if (count($this->result) === $count) {
                    break;
                }
            }
    
            return $this->result;
        }
    }
          
          





    RoadRunner, reactphp/promise, PHP 8. , .


Symfony





Laravel





Yii





Async PHP









/







  • habr -, PHP.
  • PHP 8 @jrf_nl, , PHP 8 .

    , PHP 1997-2017.





    Brent Roose , , .



    . . , , PHP 8.0 TypeError



    :



    var_dump(round("foo"));
          
          



    3v4l.org/pU0LD



    , , :
    $sub = substr('abcdef', 4, -4);
    if ($sub === false) {
        echo 'fail';
    } else {
        echo 'do something with $sub';
    }
    
    // PHP 5-7 > 'fail'
    // PHP 8   > 'do something with $sub'
    
          
          



    3v4l.org/Ln9g3



    : understandlegacycode.com.
  • 私に依存した場合のPHPの外観-BrentRooseからの望ましい機能の選択:デフォルトではfinalとvoid、混合なし、パラメーターとプロパティを入力する必要があります、ジェネリック、それらなしでどこに行くことができますか、enams、スカラーのオブジェクト。













今日は、PHPダイジェストに基づく4番目のストリームがあります。テキスト版に含まれていない詳細と興味深い詳細を含む問題からのニュースとリンクの解析。新しい楽器についての話をするゲストのアントン・ティトフ。抽選の結果と象との新たな競争。

20:00モスクワ、ミンスク/ 19:00キエフから。






エラーや不正確さに気付いた場合は、個人のhabrまたは電報でお知らせください





PHPダイジェスト テレグラムチャネルに関するその他のニュースとコメント



リンクを送信

すべてのダイジェストで リンクを検索

前号:PHP-ダイジェスト№196




All Articles