PHP8的注解
PHP8.0增加了注解的支持, 雖然 PHP的注解沒用過, 但是咱用過JAVA的注解呀.
注解這玩意怎么用? 簡單說就下面幾步:
到了PHP中, 也基本上換湯不換藥.
使用
定義注解類
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_FUNCTION)] class MyAttribute{private $value;public function __construct($value){$this->value = $value;} }這就定義完了, 其中Attrbute用來標識當前注解可以用在什么地方.
使用注解
#[MyAttribute('test')] function test(){}提取注解
同樣, 也是通過反射來提取注解.
// 獲取方法的反射對象 $ref = new ReflectionFunction("test"); // 獲取方法上指定名稱的全部注解(可以定義多個, 所以返回值是個數組) $attributes = $ref->getAttributes(MyAttribute::class); // 將獲取的第一個值實例化. 此時會調用注解的構造方法 $myAttribute = $attributes[0]->newInstance();簡單使用就這樣了. 問了, 注解有什么用? 想想JAVA中怎么用的, 基本差不多吧. 比如框架的自動注入, 定義一個路徑, 在加載的時候掃描路徑下的所有文件, 提取出對應的注解.
注釋
在8.0之前, 通過注釋其實也能夠實現同樣的功能. 但是相比注解, 注釋有幾點不足:
而注解就是升級后的語言層面注釋, 較之前方便了許多
庫注解
記錄一些系統已經定義好的注解, 但是發現沒有找到文檔. 么事, 全局搜索使用了Attribute的地方就好啦.
Immutable
命名空間: JetBrains\PhpStorm
將一個類的屬性標記為不可修改的. (寫在類上則標識類的所有屬性). 但是這個注解只是加給phpStorm看的, 運行時并不會報錯.
ArrayShape
告訴 IDE 返回的數組中都有什么類型, 方便 IDE 提示(IDE 使用)
Deprecated
棄用標識(IDE 使用). 和原本的啟用注釋類似. 不過可以提示新的函數.
ExpectedValues
標識期望得到的值(IDE 使用). 指定可能的值列表, 二進制位, 類常量等等.
例如Attribute類構造方法的使用:
Language
(IDE 使用) 說是能提示參數是某個語言的字符串(如 SQL), 研究半天沒懂動有什么用.
NoReturn
(IDE 使用) 標記調用函數時, 會結束執行, 就像調用exit函數一樣.
其參數可以指定, 僅當接收指定常量參數時才退出.
Pure
標記函數調用過程對結果沒有影響, 簡單說就是, 如果函數的返回值沒有使用, 那就可以安全的刪除這個函數調用.
最后, 發現已經定義的注解, 都是給編譯器使用的.
簡單上手之后, 發現和JAVA基本一致, 后面如果封裝一些組件的話, 應該能用得上.
總結
- 上一篇: c语言程序设计实践课选题,c语言程序设计
- 下一篇: 关于对接需求的思考