1. 程序员必读 24 本经典,100% 免费领取 2. 最值得学习的 24 本编程书,免费领取 3. 24 本编程纸质书籍,云沃客限时免费送! 4. 助力程序员快速涨薪的 24 本精选纸质书
本文由 码农网 - 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的 付费投稿计划 !
本文主要总结了 10 个 PHP 特性,这些 PHP 特性对于 PHP 开发者来说都是应该学习和使用的,译文如下:
1)标量类型声明(php7)
PHP 是一种松散类型的编程语言,因此没有提供任何指定输入参数类型和返回值类型的方法. PHP7 通过以下语法改变了这个现象:
function add(int $x, int $y) : int
{
return $x + $y;
}
echo add(1, 2);
有效类型为:类 / 接口名称,self,array(数组),callable(回调类型),bool(布尔型),float(浮点型),int(整型)和 string(字符串).
2)?? - 空接合操作符(PHP7)
空接合操作符虽然小,但非常好用,是 PHP7 中新增加的.?? - 只要操作符的左边存在且不为空,就返回左边,否则就返回操作符的右边:
//$a is not defined
$b = NULL;
$c = "abc123";
echo($a ?? $b ?? $c);
//Result: abc123
3)匿名类(PHP7)
PHP7 中还有一个新增的也很不错,那就是匿名类.有时候,我们只是没有必要创建一个命名的类,因为它的名字会导致当前命名空间的膨胀.语法非常简单:
echo (new class() {
public function myMethod() {
return "Hello!";
}
})->myMethod();
//Result: Hello!
4)Reflection
Reflection 是一个用来获取有关运行时代码信息的强大框架.让你可以对类,接口,函数,方法和扩展执行反向工程,以构建映射引擎,IoC 容器或文档框架等等.
下面是一个获取匿名类所有方法的简单例子:
$class = new ReflectionClass(new class() {
public function getText() {
return "Hello from anonymous class";
}
});
$methods = $class->getMethods();
var_dump($methods);
更多信息请看这里: http://php.net/manual/en/book.reflection.php
5)短数组初始化
在用 PHP 编程的时候,我倾向于大量使用数组,因为它们不仅功能强大,而且简单易用.PHP 的 5.4.x 版本使得更容易初始化:
$myArray = ["foo", "name" => "bar"];
6)DateTime 类
PHP 的 5.2 版本附带 DateTime 类作为首选的操纵和格式化日期和时间的方式.
更多信息请看这里: http://php.net/manual/en/class.datetime.php
7)Lambda 表达式 / 匿名函数
匿名函数(有时也被称为 lambda 表达式)是没有指定名称的函数.匿名函数可以被分配给一个变量,如下例所示:
$sayHi = function($toName) {
echo("Hi " . $toName);
};
$sayHi("Peter");
更多信息请看这里: http://php.net/manual/en/functions.anonymous.php
8)array_map
array_map 是一个不错的函数,能帮助你对数组中的每个元素执行计算.这在混合了匿名函数 / lambda 表达式的时候特别好用.无论你为数组中的元素提供什么方法,array_map 函数都适用:
$nameLengths = array_map(function($item) {
return strlen($item); }, ["Sue", "Peter", "Michael"]);
//Result: 3, 5, 7
需要注意的是,array_map 可能会比 foreach 慢一点儿(特别当混合使用 lambda 表达式的时候更为明显),所以要慎用于那些非常大的数组.
更多信息请看这里: http://php.net/manual/en/function.array-map.php
9)json_encode() 和 json_decode()
我最近倾向于大量使用 JSON 序列化和反序列化.PHP 的 json_encode 和 json_decode 函数对此提供了大力支持.需要注意的是,json_encode 会忽略私有成员:
class car {
public $make = "Tesla";
public $model ="Model S";
private $errorCodes = ['34343', '545344'];
}
$carAsJson = json_encode(new car());
//Result: {"make":"Tesla","model":"Model S"
更多信息请看这里: http://php.net/manual/en/function.json-encode.php
10)密码的哈希(hashing)和验证
PHP 通过 password_hash 和 password_verify 函数,用一种安全的方式来大力支持密码的哈希和验证.因为使用非常简单,所以我们就没有必要重新发明轮子了.想查看案例的话,请点击下面的文章:
http://www.codeaddiction.net/articles/4/hash-and-verify-passwords-in-php-the-right-way
作为 PHP 程序员 ,以上这 10 个 PHP 特性你一定要熟悉,感谢您的阅读.
译文链接: http://www.codeceo.com/article/10-php-feature-you-learn.html
来源: http://www.codeceo.com/article/10-php-feature-you-learn.html#0-tsina-1-67543-397232819ff9a47a7b7e80a40613cfe1