zoukankan      html  css  js  c++  java
  • PHP需注意的10个特性

    本文主要总结了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.codeaddiction.net/articles/34/10-features-in-php-that-you-really-should-learn-and-use

  • 相关阅读:
    我的SICP习题解答-chapter 1
    redis主从复制实验,使用ruby
    python连接redis
    ruby连接redis
    python中的classmethod和staticmethod有什么不同[转载]
    安装配置rails环境
    试用memcached高可用repcached
    试用memcached
    Python一个很好玩的特性decorator
    mybatis随笔四之MapperProxy
  • 原文地址:https://www.cnblogs.com/iifranky7/p/5528443.html
Copyright © 2011-2022 走看看