Jadual Kandungan
php7新特性

详解php7新特性

Mar 24, 2018 am 09:56 AM
php7 Ciri-ciri baru

这次给大家总结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, &#39;3&#39;, 4.1));</span>
Salin selepas log masuk

输出:
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>
Salin selepas log masuk


NULL合并运算符

如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个参数

$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
Salin selepas log masuk

上下两个表达式 的结果是一样的。

$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;
Salin selepas log masuk


组合比较符

用于比较两个表达式。当$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>
Salin selepas log masuk

通过define() 定义常量数组

<?php
define(&#39;ANIMALS&#39;, [
    &#39;dog&#39;,
    &#39;cat&#39;,
    &#39;bird&#39;
]);
echo ANIMALS[1]; // outputs "cat"
?>
php5.6 中 仅能通过const 定义
<?php
const $a = [
     &#39;a&#39;,&#39;b&#39;,&#39;c&#39;,
];
echo $a[1] ; //输出 “b”
?>
Salin selepas log masuk

匿名类

现在可以通过支持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>
Salin selepas log masuk

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>
Salin selepas log masuk


生成器 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>
Salin selepas log masuk

生成器可以委托另一个生成器

如下:

<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>
Salin selepas log masuk


新增了 整形相除函数 intp()
如下:

<span style="font-size:18px;"><?php
var_dump(intp(10, 3));
?>
以上例程会输出:
int(3)
</span>
Salin selepas log masuk

Session options

现在可以通过session_start() 接受一个数组参数,可以从写session 在 php.ini里的配置指令
参数支持session.lazy_write ,read_and_close,cache_limiter 等等
如下:

<span style="font-size:18px;"><?php
session_start([
    &#39;cache_limiter&#39; => &#39;private&#39;,
    &#39;read_and_close&#39; => true,
]);
?>
</span>
Salin selepas log masuk

新增 preg_replace_callback_array() 函数

可以是比preg_replace_callback() 执行的更好 

新增 random_bytes() 和 random_int()两个函数

具体使用方法 请查看如下:

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apr 02, 2024 pm 07:39 PM

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.

PHP 8.3 dikeluarkan: ciri baharu sepintas lalu PHP 8.3 dikeluarkan: ciri baharu sepintas lalu Nov 27, 2023 pm 12:52 PM

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

Panduan untuk mempelajari ciri baharu PHP8 dan mendapatkan pemahaman yang mendalam tentang teknologi terkini Panduan untuk mempelajari ciri baharu PHP8 dan mendapatkan pemahaman yang mendalam tentang teknologi terkini Dec 23, 2023 pm 01:16 PM

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).

Apr 09, 2024 pm 01:33 PM

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 cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

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 ...

Mana satu lebih baik, php8 atau php7? Mana satu lebih baik, php8 atau php7? Nov 16, 2023 pm 03:09 PM

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.

Apakah ciri baharu php8 Apakah ciri baharu php8 Sep 25, 2023 pm 01:34 PM

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.

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

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

See all articles