久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      PHP8.1新特性大講解之initializers初始化器

      本文系翻譯,原文地址:https://stitcher.io/blog/php-81-new-in-initializers

      PHP 8.1:初始化器(new in initializers)

      PHP 8.1 添加了一個看似很小的細節(jié),但我認為它會對許多人產(chǎn)生重大的日常影響。那么這個“初始化器 RFC 中的新內(nèi)容”是關于什么的?我們來看一個例子;我們都寫過這樣的代碼:

      class MyStateMachine {     public function __construct(         private ?State $state = null,     ) {         $this->state ??= new InitialState();     } }

      在這個狀態(tài)機示例中,我們想以兩種方式構造我們的類:有和沒有初始狀態(tài)。如果我們在沒有初始狀態(tài)的情況下構建它,我們希望設置一個默認狀態(tài)。PHP 當然支持直接在參數(shù)列表中設置初始值,但僅適用于原始類型。例如,如果我們的狀態(tài)機在內(nèi)部使用字符串而不是對象,我們就可以像這樣編寫它的構造函數(shù):

      class MyStateMachine {     public function __construct(         private string $state = 'initial',     ) {     } }

      因此,在 PHP 8.1 中,我們也可以對對象使用相同的“默認值”語法。換句話說:您可以使用new默認參數(shù)(這是“初始化程序”的一個示例):

      class MyStateMachine {     public function __construct(         private State $state = new InitialState(),     ) {     } }

      “初始化器”不僅僅是參數(shù)默認值,這里有一個來自 RFC 的簡單解釋:

      該 RFC 提議允許在參數(shù)默認值、屬性參數(shù)、靜態(tài)變量初始值設定項和全局常量初始值設定項中使用新表達式

      你沒看錯:屬性也在這個列表中!想象一個簡單的驗證庫,它使用特性來驗證屬性的輸入。也許它應該能夠驗證數(shù)組元素,如下所示:

      class CreateEmailsRequest extends FormRequestData {     #[ValidArray(         email: [new Required, new ValidEmail],         name: [new Required, new ValidString],     )]     public array $people; }

      在 PHP 8.1 之前,您將無法編寫此類代碼,因為new由于它們的評估方式,您不允許在屬性中使用,但現(xiàn)在您可以了!

      讓我們來看看一些值得一提的重要細節(jié)。

      您想要了解

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號