Llançament del llenguatge de programació PHP 7.4

Després d'un any de desenvolupament presentat llançament del llenguatge de programació PHP 7.4. La nova branca inclou una sèrie de novetats, així com diversos canvis que trenquen la compatibilitat.

Clau millores en PHP 7.4:

  • Propietats mecanografiades - Les propietats de classe ara poden incloure declaracions de tipus, per exemple:

    usuari de classe {
    public int $id;
    cadena pública $name;
    }

  • Abreujat sintaxi per definir funcions "fn(lista_de_paràmetres) => expr" amb un àmbit d'aplicació per valor. Per exemple, “fn($x) => $x + $y” és anàleg a “$fn2 = function ($x) use ($y) {return $x + $y;}”);
  • Operador d'assignació de taquigrafia "??=" que es pot utilitzar per definir un valor per defecte ("a ??= b" és similar a "a = a ?? b", si es defineix "a" el seu valor s'emmagatzema, i si no es defineix s'assigna el valor "b");
  • Limitat oportunitat preservar la jerarquia d'herència dels tipus en els tipus de retorn derivats, o la capacitat d'invertir la jerarquia dels tipus originals en els tipus d'argument derivats (covariància tipus de retorn i contravariància del tipus d'argument). Les següents construccions ara es poden utilitzar en PHP:

    classe A {}
    la classe B s'estén A {}

    productor de classe {
    mètode de funció pública (): A {}
    }
    classe ChildProducer amplia el productor {
    mètode de funció pública (): B {}
    }

  • Operador de desempaquetat dins de matrius “…$var”, permetent realitzar la substitució de matrius existents quan es defineix una nova matriu;

    $parts = ['poma', 'pera'];
    $fruits = ['plàtan', 'taronja', ...$parts, 'síndia'];
    // ['plàtan', 'taronja', 'poma', 'pera', 'síndia'];

  • Oportunitat representació visual de grans nombres amb delimitadors en literals numèrics (1_000_000_00);
  • suport enllaços febles, que us permeten conservar una referència a un objecte, però no impedeixen que el col·lector d'escombraries suprimeixi l'objecte associat;
  • Nou mecanisme serialització d'objectes (una combinació de Serializable i __sleep()/__wakeup()), que va substituir la interfície Serializable, que quedarà obsoleta;

    // Retorna una matriu que conté tots els estats de l'objecte;
    funció pública __serialize(): matriu;

    // Restaura l'estat d'un objecte d'una matriu
    funció pública __unserialize(array $data): void;

  • Permet llançar excepcions d'un mètode __toString();
  • S'ha afegit suport per carregar prèviament la memòria cau del codi objecte. S'ha afegit un paràmetre per a la configuració
    opcache.preload, mitjançant el qual podeu especificar un script PHP que es compilarà i s'executarà quan s'iniciï el servidor. Aquest script pot carregar el codi operatiu d'altres fitxers mitjançant la seva inclusió directa o utilitzant la funció opcache_compile_file();

  • S'ha afegit la funció crc32c a l'extensió Hash per calcular les sumes de control mitjançant el polinomi de Castagnoli;
  • S'ha afegit suport a la funció password_hash() per als mètodes de trituració de contrasenyes argon2i i argin2id, en la implementació de la biblioteca Sodium, si PHP es construeix sense libargon;
  • S'ha afegit la funció mb_str_split(), similar a str_split(), però que no funciona amb bytes sinó amb posicions de caràcters en una cadena de diversos bytes;
  • La funció strip_tags() ara té la capacitat de passar una matriu amb noms d'etiquetes, és a dir. en lloc de strip_tags($str, ‘’) ara podeu especificar strip_tags($str, [‘a’, ‘p’]);
  • proc_open() permet enumerar operands en una matriu en lloc d'executar-se en una cadena, i també proporciona redirecció de fils i suport per a un descriptor de fitxer nul;

    proc_open(['php', '-r', 'echo "Hola món\n";'], $descriptors, $pipes);

    // Com 2>&1 al shell
    proc_open($cmd, [1 => [‘pipe’, ‘w’], 2 => [‘redirecció’, 1]], $pipes);

    // com 2>/dev/null o 2>nul al shell
    proc_open($cmd, [1 => [‘pipe’, ‘w’], 2 => [‘null’]], $pipes);

  • Les extensions Firebird/Interbase, Recode i WDDX estan excloses de la distribució bàsica. Aquestes extensions es distribueixen ara a través de PECL;
  • Transferit a categoria antiquat característiques com ara operadors ternaris imbricats sense parèntesis, accedir a elements de matriu i cadenes amb claus ("$var{$idx}"), la funció is_real() i emetre a real, utilitzant la paraula clau pare sense classe principal, paràmetre allow_url_include configuracions , utilitzant array_key_exists() als objectes.

    Les funcions get_magic_quotes_gpc(), get_magic_quotes_runtime() i
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    S'ha proporcionat un avís sobre l'ús d'una característica obsoleta quan s'intenta processar símbols incorrectes a les funcions
    base_convert(), bindec(), octdec() i hexdec(), i quan s'especifica un patró que no sigui de cadena a mb_ereg_replace().

Font: opennet.ru

Afegeix comentari