Jadual Kandungan
类型声明
命名空间与use关键字批量声明
匿名类
摒弃老式构造函数
throwable接口
Error
<=>操作符
null合并运算符
uniform变量语法
常量数组
switch中的default默认值
session_start函数中的选项数组
unserialize函数引入过滤器

PHP7中有哪些特性

Jun 23, 2017 pm 02:25 PM
php php7 ciri

<h2 id="类型声明">类型声明</h2> <p>看代码,一目了然了。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class person {     public function age(int $age) : string     {         return 'Age is ' . $age;     } }</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="命名空间与use关键字批量声明">命名空间与use关键字批量声明</h2> <p>非混合模式</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Publishers\Packt\{ Book, Ebook, Video}; use function Publishers\Packt\{ getBook, saveBook }; use const Publishers\Packt\{ COUNT, KEY };</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>混合模式</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Publishers\Packt\{     Book,     Ebook,     Video,     function getBook,     function saveBook,     const COUNT,     const KEY };</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>复合模式</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Publishers\Packt\{     Paper\Book,     Electronic\Ebook,     Media\Video };</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="匿名类">匿名类</h2> <p>匿名类的声明与使用时同时进行的,具备其他类所具备的所以功能,区别在于匿名类没有类名。语法如下:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">new class(argument) { definition };</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p><em>匿名类是没有类名的,但在PHP内部,会在内存的引用地址表中为其分配一个全局唯一的名称。</em></p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$name = new class('You') {     public function __construct($name)     {         echo $name;     } };</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>匿名类可以继承父类及父类的方法。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class Packt {     protected $number;     public function __construct()     {         echo 'parent construct';     }     public function getNumber() : float     {         return $this->number;     } } $number = new class(5) extends Packt {     public function __construct(float $number)     {         parent::__construct();         $this->number = $number;     } }; echo $number->getNumber();</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>匿名类可以继承接口。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">interface Publishers {     public function __construct(string name, string address);     public function getName();     public function getAddress(); } class packt {     protected $number;     protected $name;     protected $address;     public function ... } $info = new class('name', 'address') extends Packt implement Publishers {     public function __construct(string $name, string $address)     {         $this->name = $name;         $this->address = $address;     }     public function getName() : string     {         return $this->name;     }     public function getAddress() : string     {         return $this->address;     } } echo $info->getName() . ' ' . $info->getAddress();</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>匿名类可以嵌套在一个类中使用。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">class Math {     public $first_number = 10;     public $second_number = 10;     public function add() : float     {         return $this->first_number + $this->second_number;     }     public function mutiply_sum()     {         return new class() extends Math         {             public function mutiply(float $third_number) : float             {                 return $this->add() * $third_number;             }         };     } } $math = new Math(); echo $math->mutiply_sum()->mutiply(2);</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="摒弃老式构造函数">摒弃老式构造函数</h2> <p>从PHP4开始,构造函数可以通过命名与类名一致的方式来声明自己是构造函数,在PHP7中这种方式声明构造函数依然可以使用,但不推荐使用,会输出不推荐的信息 <code>Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...</code>,PHP7中推荐使用 <code>__construct()</code>。</p> <h2 id="throwable接口">throwable接口</h2> <p>从PHP7开始,程序中的fatal错误都可以被截获,PHP7提供了throwable接口,异常与错误都继承于这个接口。</p> <h2 id="Error">Error</h2> <p>现在大多数的fatal错误情况会抛出一个error实例,类似于截获异常,error实例可以被try/catch截获。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">try {     ... } catch(Error $e) {     echo $e->getMessage(); }</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p><em>一些错误情况只有error的子实例会被抛出,例如 TypeError、DivisionByZeroError、ParseError等。</em></p> <h2 id="lt-gt-操作符"><=>操作符</h2> <p><code><=></code>操作符将<code>==</code>、<code><</code>、<code>></code>三个比较操作符打包在了一起,具体使用规则如下。</p> <blockquote><p>操作符两边相等时返回 0<br>操作符左边小于右边时返回 -1<br>操作符左边大于右边时返回 1</p></blockquote> <h2 id="null合并运算符">null合并运算符</h2> <p><code>??</code> 合并运算符,在第一操作数存在时可被直接返回,否则返回第二操作数。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$title = $post['title'] ?? NULL; $title = $post['title'] ?? $get['title'] ?? 'No title';</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="uniform变量语法">uniform变量语法</h2> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$first = ['name' => 'second']; $second = 'two'; echo $$first['name']; echo ${Sfirst['name']}; // PHP7 ... echo $object->$methods['title']; echo $object->{$methods['title']}; // PHP7</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>主要是因为PHP7与之前版本PHP的解析方式不一样,在PHP7中加上花括号就可以啦,就像上边代码这样,否则会报错。</p> <h2 id="常量数组">常量数组</h2> <p>从PHP5.6开始常量数组可以用<code>const</code>关键字来声明,在PHP7中常量数组可以通过<code>define</code>函数来初始化。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">const STORES = ['en', 'fr', 'ar']; // php5.6 define('STORES', ['en', 'fr', 'ar']); // php7</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="switch中的default默认值">switch中的default默认值</h2> <p>在PHP7之前,switch语句中允许多个default默认值,从PHP7开始,只能有一个default默认值,否则会产生fatal级别错误。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// php7之前 switch (true) {     case 'value':         # code...         break;     default:         # code...         break;     default:         # code...         break; } // php7 switch (true) {     case 'value':         # code...         break;     default:         # code...         break; }</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="session-start函数中的选项数组">session_start函数中的选项数组</h2> <p>在PHP7之前,使用session的时候都必须先调用session_start()函数,且这个函数并没有参数需要传递,所有session相关的配置都在php.ini文件中,从PHP7开始,可以在调用这个函数时传递参数选项数组,这些设置信息将覆盖php.ini中的session配置。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">session_start([     'cookie_lifetime' => 3600,     'read_and_close' => true ]);</pre><div class="contentsignin">Salin selepas log masuk</div></div> <h2 id="unserialize函数引入过滤器">unserialize函数引入过滤器</h2> <p>unserialize()可以反序列化任何类型的对象,没有任何过滤项,不安全,PHP7在unserialize()中引入了过滤器,且默认允许反序列化所有类型的对象。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);</pre><div class="contentsignin">Salin selepas log masuk</div></div>

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

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

See all articles