PHP匿名类
1.可以創建一次性的簡單對象
<?php class Logger {public function log($msg){echo $msg;} } $util = new stdClass(); $util->setLogger(new Logger());$util->setLogger(new class{public function log($msg){echo $msg;} });2.可以傳遞參數到匿名類的構造器,也可以擴展其他類,實現接口,以及像其他普通的類一樣使用trait;
class SomeClass{} interface SomeInterface{}trait SomeTrait{}var_dump(new class(10)extends SomeClass implements SomeInterface{private $num;public function __construct($num){$this->num = $num;}use SomeTrait; });3.匿名類被嵌套進普通Class后,不能訪問這個外部類(Outer class)的private(私有),protected(受保護)方法或者屬性
為了訪問外部類(Outer class)protected屬性或者方法,匿名類可以extend(擴展)此外部類。
為了使用外部類(Outer class)private屬性,必須通過構造器傳出來
*4.聲明同一個匿名類,所創建的對象就是這個類的實例
注意,匿名類的名稱是通過引擎賦予的。由于實現的細節,不應該去依賴這個類名
//var_dump( get_class(new class{}));
總結
- 上一篇: Ubuntu18.04安装rabbitm
- 下一篇: Vue使用axios提交表单数据