源碼地址:https://github.com/wilfordw/phpTutorial
我寫過一個《php化整為零系列》,這篇是它們的整合版,當(dāng)做目錄和回憶使用筝野,文中我大部分只列出關(guān)鍵詞簡單語法晌姚,不會詳加說明,需要詳細(xì)說明的點(diǎn)對應(yīng)鏈接詳看
本篇中也不包含版本時間軸歇竟,需要知道對應(yīng)版本特性的請參考PHP 自 5.2 到 5.6 中新增的功能詳解挥唠,這也是我系列的主要參考文章
本篇中沒有加入PDO與MySQLi的介紹,因?yàn)楹竺鏁嘘P(guān)于
Laveral
系列焕议,它有自己封裝的數(shù)據(jù)庫函數(shù)宝磨。所以這里就先不研究了,了解php的新特征也是為了能大致讀懂Laveral
框架
還有XDebug盅安,個人感覺過于繁瑣唤锉,利用var_dump等輸出已經(jīng)足夠調(diào)試了,而且Laveral
自帶錯誤堆棧信息别瞭。
autoload
自動加載
老版本__autoload
新版本spl_autoload
Closures
閉包又稱匿名函數(shù),PHP增加這一特性畜隶,也是為了讓代碼更簡潔壁肋,尤其
use
對于外部變量的引用尤其關(guān)鍵
Magic(魔術(shù)方法)
PHP5.3新增了一個叫做
__invoke
的魔術(shù)方法籽慢,這樣在創(chuàng)建實(shí)例后浸遗,可以直接調(diào)用對象
__call
當(dāng)要調(diào)用的方法不存在或權(quán)限不足時,會自動調(diào)用__call
方法箱亿。
__callStatic
當(dāng)調(diào)用的靜態(tài)方法不存在或權(quán)限不足時跛锌,會自動調(diào)用__callStatic
方法
內(nèi)置Web服務(wù)器
基本用法
php -S localhost:8000
根目錄php -S localhost:8000 -t magic/
路由腳本php -S localhost:8000 webServer/router.php
遠(yuǎn)程訪問php -S 0.0.0.0:8000
「php化整為零系列」四届惋、內(nèi)置Web服務(wù)器
命名空間
同文件中可多命名空間
大括號可包裹命名空間
use
命名空間與別名定義as
引用的時候需要在命名空間前加\\
php5.6以后對命名空間有一定的優(yōu)化可以直接通過命名空間引用常量和函數(shù)
后期靜態(tài)綁定
在繼承過程中引入static關(guān)鍵字替代self來達(dá)到靜態(tài)方法的繼承目的
Heredoc&Nowdoc
//標(biāo)示可以是自定義字符脑豹,前后字符一致郑藏,且不能在文章中出現(xiàn) Heredoc中可以嵌入變量
<<<標(biāo)示
文章
標(biāo)示;
//標(biāo)示可以是自定義字符,前后字符一致瘩欺,且不能在文章中出現(xiàn) Nowdoc中不能嵌入變量
<<<'標(biāo)示'
文章
標(biāo)示;
語法優(yōu)化
- const 允許使用之前定義的常量進(jìn)行計(jì)算、允許常量作為函數(shù)參數(shù)默認(rèn)值
- 數(shù)組簡寫
- 可變函數(shù)參數(shù)優(yōu)化
- 三元運(yùn)算符簡寫
- 類名通過::class可以獲取
- 非變量array和string也能支持下標(biāo)獲取
- 用foreach+list簡化二位數(shù)組的迭代
- yield
Traits
trait
Trait不能直接實(shí)例化- 當(dāng)方法或?qū)傩酝麜r歌粥,當(dāng)前類中的方法會覆蓋 trait的 方法,而 trait 的方法又覆蓋了基類中的方法拍埠。
- 使用
insteadof
和as
操作符來解決沖突失驶,insteadof
是使用某個方法替代另一個,而as
是給方法取一個別名as
關(guān)鍵詞還有另外一個用途枣购,那就是修改方法的訪問控制:- Trait 也能組合Trait嬉探,Trait中支持抽象方法擦耀、靜態(tài)屬性及靜態(tài)方法
Phar
- 配置php.ini
phar.readonly = Off
- 打包
new Phar(包名)
$phar->buildFromDirectory(打包目錄, 正則篩選);
$phar->compressFiles( Phar::GZ |PHAR::BZ2);//壓縮方式
$phar->setStub( $phar->createDefaultStub(入口文件) );
- 加載
require_once 'phar:://包名/文件';