详解php7新特性
这次给大家总结php7新特性,下面就是实战案例,一起跟随小编的脚步来看一下。
php7新特性
标量类型声明(要求参数是一个具体的类型,如果参数类型不匹配,php5 会出现fatal 错误,php7 会抛 TypeError 异常)
有两种模式:强制(默认)和严格模式.
类型参数有:
1. string
2. int
3. float
4.bool
它们扩充了php5中引入的其他类型
1.类名
2. 接口
3.数组
4.回调类型
例如:
<span style="font-size:18px;">function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1));</span>
输出:
int(9)
返回类型声明
php7 增加了对返回类型的支持,其和参数类型声明非常相似,返回类型
声明指明了函数返回值的类型。可用的类型与参数声明中的可用类型相同。
例如:
<span style="font-size:18px;"><?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 以上例程会输出: Array ( [0] => 6 [1] => 15 [2] => 24 )</span>
NULL合并运算符
如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个参数
$username = $_GET['user'] ?? 'nobody';
上下两个表达式 的结果是一样的。
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
组合比较符
用于比较两个表达式。当$a 大于、等于或小于$b 时它分别返回1、0或-1.
例如:
<span style="font-size:18px;"><?php // Integers echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // Floats echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // Strings echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?></span>
通过define() 定义常量数组
<?php define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // outputs "cat" ?> php5.6 中 仅能通过const 定义 <?php const $a = [ 'a','b','c', ]; echo $a[1] ; //输出 “b” ?>
匿名类
现在可以通过支持new class 来实例化一个匿名类 , 这个可以用来代替一些只用一次的完成类
为unserialize()提供过滤
<span style="font-size:18px;"><?php // 把所有的对象转换为 __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => false]); // 除了MyClass,MyClass2 都转换为 into __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]); // 默认的行为,接受所有的参数 $data = unserialize($foo, ["allowed_classes" => true]); </span>
IntlChar
新增加的IntlChar 类 旨在暴露出更多的ICU功能,这个类自身定义了许多静态方法用于操作多字符集的unicode字符
如果要使用此类,需要先安装Intl扩展
预期
预期是向后兼用并增强之前的assert()的方法,它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特性异常的能力。
现在assert() 是一个语言结构,它允许第一个参数是一个表达式 而不仅仅是一个待计算的字符串或一个待测试的boolean
使用use 声明一组 类
如下:
<span style="font-size:18px;"><?php // Pre PHP 7 code use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7+ code use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; ?> </span>
生成器 return 表达式
如下:
<span style="font-size:18px;"><?php $gen = (function() { yield 1; yield 2; return 3; })(); foreach ($gen as $val) { echo $val, PHP_EOL; } echo $gen->getReturn(), PHP_EOL;// 换行,为了提高源码可读性 以上例程会输出: 1 2 3 </span>
生成器可以委托另一个生成器
如下:
<span style="font-size:18px;"><?php function gen() { yield 1; yield 2; yield from gen2(); } function gen2() { yield 3; yield 4; } foreach (gen() as $val) { echo $val, PHP_EOL; } ?> 以上例程会输出: 1 2 3 4 </span>
新增了 整形相除函数 intp()
如下:
<span style="font-size:18px;"><?php var_dump(intp(10, 3)); ?> 以上例程会输出: int(3) </span>
Session options
现在可以通过session_start() 接受一个数组参数,可以从写session 在 php.ini里的配置指令
参数支持session.lazy_write ,read_and_close,cache_limiter 等等
如下:
<span style="font-size:18px;"><?php session_start([ 'cache_limiter' => 'private', 'read_and_close' => true, ]); ?> </span>
新增 preg_replace_callback_array() 函数
可以是比preg_replace_callback() 执行的更好
新增 random_bytes() 和 random_int()两个函数
具体使用方法 请查看如下:
list() 不在支持自动解包
之前 list 对于操作实现了ArrayAccess的对象不提供保障,现在这个问题已经被解决了
Atas ialah kandungan terperinci 详解php7新特性. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Untuk menyelesaikan pemalam yang tidak menunjukkan isu yang dipasang dalam PHP 7.0: Semak konfigurasi pemalam dan dayakan pemalam. Mulakan semula PHP untuk menggunakan perubahan konfigurasi. Semak kebenaran fail pemalam untuk memastikan ia betul. Pasang kebergantungan yang hilang untuk memastikan pemalam berfungsi dengan betul. Jika semua langkah lain gagal, bina semula PHP. Punca lain yang mungkin termasuk versi pemalam yang tidak serasi, memuatkan versi yang salah atau isu konfigurasi PHP.

PHP8.3 dikeluarkan: Gambaran keseluruhan ciri baharu Memandangkan teknologi terus berkembang dan memerlukan perubahan, bahasa pengaturcaraan sentiasa dikemas kini dan dipertingkatkan. Sebagai bahasa skrip yang digunakan secara meluas dalam pembangunan web, PHP sentiasa bertambah baik untuk menyediakan pembangun alat yang lebih berkuasa dan cekap. Versi PHP 8.3 yang dikeluarkan baru-baru ini membawakan banyak ciri dan penambahbaikan baharu yang telah lama ditunggu-tunggu Mari kita lihat gambaran keseluruhan ciri baharu ini. Permulaan sifat bukan nol Dalam versi PHP yang lalu, jika harta kelas tidak diberikan nilai secara eksplisit, nilainya

Analisis mendalam tentang ciri baharu PHP8 untuk membantu anda menguasai teknologi terkini Seiring berjalannya waktu, bahasa pengaturcaraan PHP sentiasa berkembang dan bertambah baik. Versi PHP8 yang dikeluarkan baru-baru ini menyediakan pembangun dengan banyak ciri dan penambahbaikan baharu yang menarik, membawa lebih banyak kemudahan dan kecekapan kepada kerja pembangunan kami. Dalam artikel ini, kami akan menganalisis ciri baharu PHP8 secara mendalam dan memberikan contoh kod khusus untuk membantu anda menguasai teknologi terkini ini dengan lebih baik. Pengkompil JIT PHP8 memperkenalkan kompilasi JIT (Just-In-Time).

Penyelesaian biasa untuk persekitaran pelayan PHP termasuk memastikan versi PHP yang betul dipasang dan fail yang berkaitan telah disalin ke direktori modul. Lumpuhkan SELinux buat sementara waktu atau selama-lamanya. Semak dan konfigurasikan PHP.ini untuk memastikan sambungan yang diperlukan telah ditambah dan disediakan dengan betul. Mulakan atau mulakan semula perkhidmatan PHP-FPM. Semak tetapan DNS untuk isu penyelesaian.

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Berbanding dengan PHP7, PHP8 mempunyai beberapa kelebihan dan penambahbaikan dari segi prestasi, ciri baharu dan penambahbaikan sintaks, sistem jenis, pengendalian ralat dan sambungan. Walau bagaimanapun, memilih versi yang hendak digunakan bergantung pada keperluan khusus anda dan keadaan projek. Pengenalan terperinci: 1. Peningkatan prestasi, PHP8 memperkenalkan pengkompil Just-in-Time (JIT), yang boleh meningkatkan kelajuan pelaksanaan kod 2. Ciri baharu dan penambahbaikan sintaks, PHP8 menyokong pengisytiharan parameter yang dinamakan dan parameter pilihan, membuat fungsi Panggilan adalah lebih fleksibel kelas tanpa nama, jenis pengisytiharan sifat, dsb.

Ciri baharu php8 termasuk pengkompil JIT, potongan jenis, parameter bernama, jenis kesatuan, sifat, penambahbaikan pengendalian ralat, sokongan pengaturcaraan tak segerak, fungsi perpustakaan standard baharu dan sambungan kelas tanpa nama. Pengenalan terperinci: 1. Pengkompil JIT, PHP8 memperkenalkan pengkompil JIT, yang merupakan peningkatan prestasi yang penting Pengkompil JIT boleh menyusun dan mengoptimumkan beberapa kod pelaksanaan frekuensi tinggi dalam masa nyata, dengan itu meningkatkan kelajuan larian , PHP8 memperkenalkan fungsi inferens jenis, membenarkan pembangun menyimpulkan secara automatik jenis pembolehubah apabila mengisytiharkan pembolehubah, dsb.

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...
