class_exists似乎一直在调用类构造函数

时间:2012-06-01 00:19:41

标签: php

编辑:

我修正了我的拼写错误,并且调用了一个类不是区分大小写的

我看到了如果我有

class A
{
    public function __construct()
    {
        echo 'hello';
    }
}

并执行此操作

if (class_exists('a'))
    $class = 'a';

$a = new $class();

我会看到

hellohello

如果我发表评论if statement,那么我没关系,它会echo

hello

如何阻止class_exists()运行类构造函数?

编辑:

这是我的用法

foreach ($this->getNamespace() as $ns) {

                    //if (class_exists($ns . '\\' . $controller))
                        $controller = $ns . '\\' . $controller;

                    if (class_exists($ns . '\\' . $model))
                        $model = $ns . '\\' . $model;
                }

                $model = new $model($this->config);
                $controller = new $controller($this->config);

2 个答案:

答案 0 :(得分:2)

运行以下代码时:

class A
{
    public function __construct()
    {
        echo 'hello';
    }
}

if (class_exists('a'))
    $class = 'a';

$a = new $class();

我明白了:

hello

您的问题可能在其他地方。

答案 1 :(得分:1)

您的示例代码中有一些错误。这是正确的代码:

<?php
class a // Class name is lower case
{
    public function __construct() // It's __construct not __constructor
    {
        echo 'hello';
    }
}

$class = 'stdClass';
if (class_exists('a')) { // Missing a closing parenthesis here
    $class = 'a';
}

$a = new $class();

输出:

hello

See the demo