日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

PHP8的注解

發(fā)布時間:2024/8/23 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP8的注解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

PHP8.0增加了注解的支持, 雖然 PHP的注解沒用過, 但是咱用過JAVA的注解呀.

注解這玩意怎么用? 簡單說就下面幾步:

  • 定義注解類
  • 使用注解
  • 提取注解
  • 到了PHP中, 也基本上換湯不換藥.

    使用

    定義注解類

    #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_FUNCTION)] class MyAttribute{private $value;public function __construct($value){$this->value = $value;} }

    這就定義完了, 其中Attrbute用來標(biāo)識當(dāng)前注解可以用在什么地方.

    使用注解

    #[MyAttribute('test')] function test(){}

    提取注解

    同樣, 也是通過反射來提取注解.

    // 獲取方法的反射對象 $ref = new ReflectionFunction("test"); // 獲取方法上指定名稱的全部注解(可以定義多個, 所以返回值是個數(shù)組) $attributes = $ref->getAttributes(MyAttribute::class); // 將獲取的第一個值實例化. 此時會調(diào)用注解的構(gòu)造方法 $myAttribute = $attributes[0]->newInstance();

    簡單使用就這樣了. 問了, 注解有什么用? 想想JAVA中怎么用的, 基本差不多吧. 比如框架的自動注入, 定義一個路徑, 在加載的時候掃描路徑下的所有文件, 提取出對應(yīng)的注解.

    注釋

    在8.0之前, 通過注釋其實也能夠?qū)崿F(xiàn)同樣的功能. 但是相比注解, 注釋有幾點不足:

  • 沒有編譯器提示. 容易打錯名字, 參數(shù)等等
  • 容易誤刪. 畢竟注釋默認(rèn)為是不影響代碼邏輯的
  • 缺少運行時檢查. 就算你寫錯了, 也能正常運行, 可能會導(dǎo)致隱藏的 bug
  • 注釋的解析缺少語言支持.
  • 而注解就是升級后的語言層面注釋, 較之前方便了許多

    庫注解

    記錄一些系統(tǒng)已經(jīng)定義好的注解, 但是發(fā)現(xiàn)沒有找到文檔. 么事, 全局搜索使用了Attribute的地方就好啦.

    Immutable

    命名空間: JetBrains\PhpStorm

    將一個類的屬性標(biāo)記為不可修改的. (寫在類上則標(biāo)識類的所有屬性). 但是這個注解只是加給phpStorm看的, 運行時并不會報錯.

    ArrayShape

    告訴 IDE 返回的數(shù)組中都有什么類型, 方便 IDE 提示(IDE 使用)

    Deprecated

    棄用標(biāo)識(IDE 使用). 和原本的啟用注釋類似. 不過可以提示新的函數(shù).

    ExpectedValues

    標(biāo)識期望得到的值(IDE 使用). 指定可能的值列表, 二進(jìn)制位, 類常量等等.

    例如Attribute類構(gòu)造方法的使用:

    Language

    (IDE 使用) 說是能提示參數(shù)是某個語言的字符串(如 SQL), 研究半天沒懂動有什么用.

    NoReturn

    (IDE 使用) 標(biāo)記調(diào)用函數(shù)時, 會結(jié)束執(zhí)行, 就像調(diào)用exit函數(shù)一樣.

    其參數(shù)可以指定, 僅當(dāng)接收指定常量參數(shù)時才退出.

    Pure

    標(biāo)記函數(shù)調(diào)用過程對結(jié)果沒有影響, 簡單說就是, 如果函數(shù)的返回值沒有使用, 那就可以安全的刪除這個函數(shù)調(diào)用.

    最后, 發(fā)現(xiàn)已經(jīng)定義的注解, 都是給編譯器使用的.


    簡單上手之后, 發(fā)現(xiàn)和JAVA基本一致, 后面如果封裝一些組件的話, 應(yīng)該能用得上.

    總結(jié)

    以上是生活随笔為你收集整理的PHP8的注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。