《高性能PHP 7》读书笔记
今天比较有空,把闲在箱子里很久的书《高性能PHP 7》拿出来看,该书是巴基斯坦的Altaf Hussain
编写,书中主要介绍了PHP 7的新特性、应用性能提升、数据库性能提升,调试分析、压力负载测试、最佳实践,还有一些提升工作效率的工具。
PHP 7 新特性
第一章是介绍搭建环境,这里就省略过去,直接看第二章PHP 7 新特性
。
形参类型声明
PHP 7 支持的形参类型声明的类型有整型、浮点型、字符串型、布尔型,可以用在函数的形参及对象的方法上。如以下例子。
class Person
{
// 对象的方法形参
public function age(int $age)
{
return $age;
}
}
// 函数形参
function getAge(int $age)
{
return $age;
}
返回类型声明
跟形参类型一样,支持在函数和对象的方法中声明,代码如下:
class Person
{
// 对象的方法形参
public function age(int $age): string
{
return 'Age is' . $age;
}
}
// 函数形参
function getAge(int $age): string
{
return 'Age is' . $age;
}
命名空间与use关键字批量声明
// 非混合的 use 声明
use Publishers\Packt\{
Book, Ebook, Video
};
use function Publishers\Packt\{
getBook, saveBook
};
use const Publishers\Packt\{
COUNT, KEY
};
// 混合模式的 use 声明
use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY,
};
// 复合模式的 use 声明
use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video,
};
匿名类
匿名类的声明与使用是同时进行的,它具备其它类所具有的所有功能,差别在于匿名类没有类名。
$name = new class('Dylan Woo')
{
public function __construct(string $name)
{
echo $name;
}
};
新的操作符
太空飞船操作符 <=>
- 当符号两边相等返回0
- 当符号右边大于符号左边时返回-1
- 当符号左边大于符号右边时返回1
可以这么记,左减右为0时,返回0,为负数时为-1,否则为1。
null 合并运算符 ??
$title = $_POST['title'] ?? $_GET['title'] ?? 'No POST or GET';
// 用老式的代码实现如下
if (isset($_POST['title']))
$title = $_POST['title'];
elseif (isset($_GET['title']))
$title = $_GET['title'];
else
$title = 'No POST or GET';
统一变量语法
$first = ['name' => 'second'];
$second = 'Howdy';
// 在PHP 5.x 版本中可以这样
echo $$first['name']; //输出 Howdy
// 在PHP 7 中则会产生Notice级别的错误,并且得到不确定的内容,推荐这样
echo ${$first['name']}; //输出 Howdy
常量数组
从PHP 5.6 开始,常量数据可以使用 const
关键字来声明,方法如下。
const STORES = ['en','fr','ar'];
在PHP 7 中,也可以通过define
函数来初始化
define('STORES',['en','fr','ar']);
第一章写完了,书上写了25页,我概况了一下,方便自己回忆。