PHP Digest # 197 (11 a 25 de janeiro de 2021)



Nova seleção com links para notícias e materiais. No lançamento: objetos como chaves de array e outras propostas RFC para PHP 8.1, rodando WebAssembly em PHP, sobre colisões em arrays, uma porção de ferramentas úteis, artigos, vídeos, PHP Live Digest .



Gostar de ler!









Notícias e lançamentos





PHP Internals



  • [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.
  • Qual seria a aparência do PHP se dependesse de mim - Uma seleção de recursos desejáveis ​​de Brent Roose: final e vazio por padrão, sem mistos, parâmetros e propriedades devem ser digitados, genéricos, onde podemos ir sem eles, enams, objetos para escalares .













Hoje haverá a quarta transmissão baseada em PHP Digest. Análise de notícias e links da edição com detalhes e detalhes interessantes não incluídos na edição do texto. Convidado Anton Titov com uma história sobre um novo instrumento. Bem como os resultados do sorteio e uma nova competição com elefantes.

Começando às 20:00 Moscou, Minsk / 19:00 Kiev.






Se você notar um erro ou imprecisão, informe-nos por meio de um habr ou telegrama pessoal .





Mais notícias e comentários no canal PHP Digest Telegram .



Enviar link

Links de busca em todos os resumos

← Número anterior: PHP-Digest № 196




All Articles