🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**一.魔术方法属性和返回值类型声明必须严格执行** ``` public function __toString(): string {} public function __isset(string $name): bool {} public function __get(string $name): mixed {} public function __set(string $name, mixed $value): void {} public function __unset(string $name): void {} public function __set_state(array $properties): object {} public function __call(string $name, array $arguments): mixed {} public function __callStatic(string $name, array $arguments): mixed {} public function __invoke(mixed $arguments): mixed {} public function __clone(): void {} public function __serialize(): array {} public function __unserialize(array $data): void {} public function __sleep(): array {} public function __wakeup(): void {} public function __debugInfo(): ?array {} ```   **二.实例** 1.__toString魔术方法 ``` class Person { public function __toString():int{ return 'my name is php8'; } } echo new Person; ``` 2.__clone魔术方法 ``` class Person { public function __clone():string{ echo 123; return 'hello'; } } $obj=new Person; $a=clone $obj; ``` 3.__isset魔术方法 ``` class Person{ private $name='user1'; public function __isset(string $key):bool{ return isset($this->$key); } } $obj=new Person; var_dump(isset($obj->name)); ```