<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); $instance1 = new Redis(); var_dump($instance1); // object(Redis)#2 (0) { // } // 获取$instance1的类名 var_dump($instance1::class); // string(5) "Redis" // 使用类名创建实例 $instance2 = new ($instance1::class)(); var_dump($instance2); // object(Redis)#3 (0) { // } // 使用类名进行反射 try { $reflection = new ReflectionClass($instance1::class); } catch (ReflectionException $e) { exit('ReflectionException: ' . $e->getMessage()); } $name = $reflection->getName(); $method = 'set'; if ($reflection->hasMethod($method)) { echo "存在$name::$method()方法" . PHP_EOL; // 存在Redis::set()方法 } else { echo "不存在$name::$method()方法" . PHP_EOL; } //========== 总结 ==========// // 1、$instance::class的作用是获取$instance的类名,在不知道一个实例的类名的情况下可以使用::class来获取其类名, // 然后使用获取到的类名来创建新实例或进行反射。
Copyright © 2024 码农人生. All Rights Reserved