问题:
    一个类明明存在,即使在当前类的定义里,使用 class_exists 检测当前类是否存在都返回 false。
    如:

    1. <?php
    2. namespace amsx\account;
    3. class ActiveCodeProcessor{
    4. private static $_processerPool = [];
    5. /**
    6. * @param $type
    7. * @return ActiveCodeProcessor
    8. */
    9. public static function getCodeProcessorObj($type){
    10. if(!key_exists($type, self::$_processerPool)){
    11. $className = 'ActiveCodeProcessor'.$type;
    12. if(class_exists($className)){
    13. self::$_processerPool[$type] = new $className;
    14. }
    15. }
    16. //......
    17. }
    18. }

    解决方案:
    原来是使用了命名空间后,需要使用完整的带命名空间的类名,不会因为是当前类定义而简化。
    如:

    1. <?php
    2. echo class_exists('\think\Cache');

    文章来源:https://blog.csdn.net/y31/article/details/82786021