it123社区

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: php thinkphp 技术
查看: 296|回复: 6

10个你应该学习使用的PHP特性

[复制链接]

50

主题

142

帖子

613

积分

审核员

Rank: 7Rank: 7Rank: 7

积分
613

公益小组

QQ
发表于 2017-7-21 14:30:55 | 显示全部楼层 |阅读模式

本文主要总结了10个PHP特性,这些PHP特性对于PHP开发者来说都是应该学习和使用的,译文如下:
1)标量类型声明(PHP7)
PHP是一种松散类型的编程语言,因此没有提供任何指定输入参数类型和返回值类型的方法。 PHP7通过以下语法改变了这个现象:
[PHP] 纯文本查看 复制代码
function add(int $x, int $y) : int
{
    return $x + $y;
}

echo add(1, 2);

有效类型为:类/接口名称,self,array(数组),callable(回调类型),bool(布尔型),float(浮点型),int(整型)和string(字符串)。
2)?? — 空接合操作符(PHP7)

空接合操作符虽然小,但非常好用,是PHP7中新增加的。?? — 只要操作符的左边存在且不为空,就返回左边,否则就返回操作符的右边:

[PHP] 纯文本查看 复制代码
//$a is not defined
$b = NULL;
$c = "abc123";

echo($a ?? $b ?? $c);

//Result: abc123

3)匿名类(PHP7)

PHP7中还有一个新增的也很不错,那就是匿名类。有时候,我们只是没有必要创建一个命名的类,因为它的名字会导致当前命名空间的膨胀。语法非常简单:

[PHP] 纯文本查看 复制代码
echo (new class() {
    public function myMethod() {
      return "Hello!";
    }
})->myMethod();

//Result: Hello!

4)Reflection

Reflection是一个用来获取有关运行时代码信息的强大框架。让你可以对类、接口、函数、方法和扩展执行反向工程,以构建映射引擎,IoC容器或文档框架等等。

下面是一个获取匿名类所有方法的简单例子:

[PHP] 纯文本查看 复制代码
$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版本使得更容易初始化:

[PHP] 纯文本查看 复制代码
$myArray = ["foo", "name" => "bar"];

6)DateTime类

PHP的5.2版本附带DateTime类作为首选的操纵和格式化日期和时间的方式。

更多信息请看这里:http://php.net/manual/en/class.datetime.php

7)Lambda表达式/匿名函数

匿名函数(有时也被称为lambda表达式)是没有指定名称的函数。匿名函数可以被分配给一个变量,如下例所示:

[PHP] 纯文本查看 复制代码
$sayHi = function($toName) {
    echo("Hi " . $toName);
};

$sayHi("Peter");

更多信息请看这里:http://php.net/manual/en/functions.anonymous.php

8)array_map

array_map是一个不错的函数,能帮助你对数组中的每个元素执行计算。这在混合了匿名函数/ lambda表达式的时候特别好用。无论你为数组中的元素提供什么方法,array_map函数都适用:

[PHP] 纯文本查看 复制代码
$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会忽略私有成员:

[PHP] 纯文本查看 复制代码
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/art ... fy-passwords-in-php—the-right-way

作为PHP程序员,以上这10个PHP特性你一定要熟悉,感谢您的阅读。
译文链接:http://www.codeceo.com/article/10-php-feature-you-learn.html
英文原文:10 features in PHP that you really should learn (and use!)
翻译作者:码农网 – 小峰
[ 转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

帖子的最近访客

回复

使用道具 举报

70

主题

145

帖子

646

积分

版主

Rank: 7Rank: 7Rank: 7

积分
646

公益小组

QQ
发表于 2017-7-21 17:54:30 | 显示全部楼层
很不错哦
每天进步一点点!
回复

使用道具 举报

13

主题

41

帖子

93

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
93
发表于 2017-7-21 18:43:27 | 显示全部楼层
学习了哈!
爱技术、爱分享、爱生活、爱IT123!
回复

使用道具 举报

23

主题

60

帖子

223

积分

注册会员

Rank: 2

积分
223

公益小组

发表于 2017-7-24 13:53:04 | 显示全部楼层
show time~
回复

使用道具 举报

23

主题

63

帖子

336

积分

注册会员

Rank: 2

积分
336
发表于 2017-7-25 10:01:55 | 显示全部楼层
哈希
IT123社区见证我的进步!
回复

使用道具 举报

1

主题

6

帖子

40

积分

新手上路

Rank: 1

积分
40
发表于 2017-8-12 12:59:53 | 显示全部楼层
非常不错的PHP知识!
回复

使用道具 举报

7

主题

14

帖子

80

积分

新手上路

Rank: 1

积分
80
发表于 2017-8-19 14:34:14 | 显示全部楼层
学习了,laravel了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术交流群

IT123微社区

微信打赏本站

QQ|Archiver|手机版|小黑屋|it123社区:学习PHP、Java编程平台  

GMT+8, 2018-1-21 20:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表