Summary of new features of PHP7.4

silencement
Release: 2023-04-08 10:36:01
forward
3949 people have browsed it

Summary of new features of PHP7.4

PHP7.4 New Features

PHP7.4 has been released. Brought some new features. This allows us to write less code.

1. Add qualified type to attributes

<?php
class User {
  public int $age;
  public string $name
}  
$user = new User();
$user->age = 10;
$user->name = "张三";
//error
$user->age = "zhang";//需要传递int
Copy after login

2. Arrow function

This feature basically refers to the syntax of ES6 in Js. This allows us to write less code. If your code has the function fn. May conflict

<?php
$factor = 10;
$nums = array_map(fn($n)=>$n * $factor,[1,2,3]);//[10,20,30]
//之前的写法
$nums = array_map(function($num)use($factor){
  return $num * $factor;
},[1,2,3])
Copy after login

3. Limited return type covariance and parameter type contravariance

Full covariance/contravariance support is only provided when using autoloading. Within a single file, only non-cyclic type references can be used, since all classes must be available before being referenced.

<?php
class A {}
class B extends A {}
class Producer {
    public function method(): A {}
}
class ChildProducer extends Producer {
    public function method(): B {}
}
?>
Copy after login

4. Array unpacking

Use the spread operator... to unpack the array. This feature should be absorbed from js. See example

<?php
$parts = [&#39;apple&#39;, &#39;pear&#39;];
$fruits = [&#39;banana&#39;, &#39;orange&#39;, ...$parts, &#39;watermelon&#39;];//[&#39;banana&#39;, &#39;orange&#39;, &#39;apple&#39;, &#39;pear&#39;, &#39;watermelon&#39;];
//老的写法
$fruits = array_merge([&#39;banana&#39;, &#39;orange&#39;],$parts,[&#39;watermelon&#39;]);
Copy after login

5. Null coalescing operator assignment

<?php
$array[&#39;key&#39;] ??= computeDefault();
// 老的写法
if (!isset($array[&#39;key&#39;])) {
    $array[&#39;key&#39;] = computeDefault();
}
?>
Copy after login

6. Numeric literal delimiter

Number literals can contain underscores between numbers.

<?php
6.674_083e-11; // float
299_792_458;   // decimal
0xCAFE_F00D;   // hexadecimal
0b0101_1111;   // binary
?>
Copy after login

7. Allow exceptions to be thrown from __toString()

Now allows exceptions to be thrown from __toString(). In the past this would result in a fatal error. Existing recoverable in string conversion Fatal errors have been converted to Error exceptions.

8. Filter

Added FILTER_VALIDATE_FLOAT

<?php
  filter_var(1.00,FILTER_VALIDATE_FLOAT);
filter.filters.validate
Copy after login

9. strip_tags supports arrays

<?php
  strip_tags($str,[&#39;p&#39;,&#39;a&#39;,&#39;div&#39;]);
//老的写法
strip_tags($str,"<p><a><div>");
废弃的特性
1. 没有显式括号的嵌套三元运算符
<?php
1 ? 2 : 3 ? 4 : 5;   // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
?>
Copy after login

During the interview, Finally, I don’t have to worry about asking you what the result is. In fact, in production, everyone will not write like this.

2. Curly braces to access array index

<?php
$arr = ["a"=>"111"];
$index = "a";
$arr{$index}//废弃
$arr[$index];
Copy after login

To be honest, this is the first time I have seen it and it has been abandoned. , indicating that no one will use it this way.

3. real and is_real real numbers

<?php
  $num = "";
  $a = (real) $num;//废弃
  $a = (float) $num;
Copy after login

4. The parent keyword is used in a class without a parent class

If parent is used in a class without a parent class, compilation will occur. mistake.

<?php
  class Test{
  public function index() 
  {
    return parent::index();//编译错误
  }
}
Copy after login

5. money_format function

money_format is deprecated and replaced by numberFormater

6. Removed extensions

1.Firebird/Interbase
2.Recode
3.WDDX
Copy after login

The above is the detailed content of Summary of new features of PHP7.4. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:www.liqingbo.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!