在PHP中,我如何检查类是否存在?

10

我有一个这样的主类结构函数:

function __construct(){
    $this->conf = $GLOBALS['conf'];
    $this->dbi = new dbinfo;
    $this->modOpt = new modOptions;
    $this->lang = new language;

    /** Connect DB extended Class **/
    parent::__construct($GLOBALS['connect']);
}

我定义了一些类,但这些类在库文件中,并且通常会在文件开始时被包含,除了其中一个类,该类将在提交请求时包含,如下所示:

if (isset($_POST['delGroup']) && isset($_SESSION['content_viewer']) && $_SESSION['content_viewer']['code'] >= 1){   
    include_once(realpath(dirname(__FILE__) . '/../..')."/mod/dbinfo/proc.php");
}

所以我希望在我的dbinfo类的构造函数中添加检查,如下所示。
function __construct(){
    $this->conf = $GLOBALS['conf'];
    if (isset(new dbinfo))
        $this->dbi = new dbinfo;

    $this->modOpt = new modOptions;
    $this->lang = new language;

    /** Connect DB extended Class **/
    parent::__construct($GLOBALS['connect']);
}

但是使用 if isset 这种方法不起作用,请告诉我正确的方式如何检查文件中是否存在类。谢谢。

http://php.net/manual/zh/function.get-declared-classes.php - Marc B
3
关于PHP语言中存在一个名为class_exists()的函数,这件事本身是否具有讽刺意味?你可以参考http://php.net/manual/zh/function.class-exists.php。如果你将这个问题作为标题在搜索引擎上搜索,我几乎可以保证你会得到这个答案,并且节省大量时间来撰写问题。 - CD001
请检查一个文件中是否存在一个类。 - Nicolas Bouvrette
2个回答

23

尝试使用 class_exists() http://php.net/manual/zh/function.class-exists.php

在您的情况下,查找 dbinfo 类,请执行以下操作:

      if(class_exists('dbinfo')){
          //do something
如果你的类有命名空间,请包括完整的命名空间类名。

请不要忘记在默认设置不同的情况下使用 class_exists('dbinfo', true); - Vladimir Ch

5

class_exists('class_name',false);

如果函数只是检查类是否存在,则将第二个参数设置为 false

如果函数需要尝试加载类,则将第二个参数设置为 true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接