首页 > 语言 > JavaScript > 正文

PHP7新特性简述

2024-05-06 15:16:05
字体:
来源:转载
供稿:网友

类型声明

看代码,一目了然了。

class person{  public function age(int $age) : string  {    return 'Age is ' . $age;  }}

命名空间与use关键字批量声明

非混合模式

use Publishers/Packt/{ Book, Ebook, Video};use function Publishers/Packt/{ getBook, saveBook };use const Publishers/Packt/{ COUNT, KEY };

混合模式

use Publishers/Packt/{  Book,  Ebook,  Video,  function getBook,  function saveBook,  const COUNT,  const KEY};

复合模式

use Publishers/Packt/{  Paper/Book,  Electronic/Ebook,  Media/Video};

匿名类

匿名类的声明与使用时同时进行的,具备其他类所具备的所以功能,区别在于匿名类没有类名。语法如下:

new class(argument) { definition };

匿名类是没有类名的,但在PHP内部,会在内存的引用地址表中为其分配一个全局唯一的名称。

$name = new class('You') {  public function __construct($name)  {    echo $name;  }};

匿名类可以继承父类及父类的方法。

class Packt{  protected $number;  public function __construct()  {    echo 'parent construct';  }  public function getNumber() : float  {    return $this->number;  }}$number = new class(5) extends Packt{  public function __construct(float $number)  {    parent::__construct();    $this->number = $number;  }};echo $number->getNumber();

匿名类可以继承接口。

interface Publishers{  public function __construct(string name, string address);  public function getName();  public function getAddress();}class packt{  protected $number;  protected $name;  protected $address;  public function ...}$info = new class('name', 'address') extends Packt implement Publishers{  public function __construct(string $name, string $address)  {    $this->name = $name;    $this->address = $address;  }  public function getName() : string  {    return $this->name;  }  public function getAddress() : string  {    return $this->address;  }}echo $info->getName() . ' ' . $info->getAddress();

匿名类可以嵌套在一个类中使用。

class Math{  public $first_number = 10;  public $second_number = 10;  public function add() : float  {    return $this->first_number + $this->second_number;  }  public function mutiply_sum()  {    return new class() extends Math    {      public function mutiply(float $third_number) : float      {        return $this->add() * $third_number;      }    };  }}$math = new Math();echo $math->mutiply_sum()->mutiply(2);

摒弃老式构造函数

从PHP4开始,构造函数可以通过命名与类名一致的方式来声明自己是构造函数,在PHP7中这种方式声明构造函数依然可以使用,但不推荐使用,会输出不推荐的信息 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...,PHP7中推荐使用 __construct()。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选