類型聲明
看代碼,一目了然了。
class person{ public function age(int $age) : string { return 'Age is ' . $age; }}命名空間與use關(guān)鍵字批量聲明
非混合模式
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};復(fù)合模式
use Publishers/Packt/{ Paper/Book, Electronic/Ebook, Media/Video};匿名類
匿名類的聲明與使用時(shí)同時(shí)進(jìn)行的,具備其他類所具備的所以功能,區(qū)別在于匿名類沒(méi)有類名。語(yǔ)法如下:
new class(argument) { definition };匿名類是沒(méi)有類名的,但在PHP內(nèi)部,會(huì)在內(nèi)存的引用地址表中為其分配一個(gè)全局唯一的名稱。
$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();匿名類可以嵌套在一個(gè)類中使用。
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);摒棄老式構(gòu)造函數(shù)
從PHP4開(kāi)始,構(gòu)造函數(shù)可以通過(guò)命名與類名一致的方式來(lái)聲明自己是構(gòu)造函數(shù),在PHP7中這種方式聲明構(gòu)造函數(shù)依然可以使用,但不推薦使用,會(huì)輸出不推薦的信息 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()。
新聞熱點(diǎn)
疑難解答
圖片精選