在静态函数中返回静态变量会在控制台中生成错误

时间:2014-12-30 04:34:02

标签: php database oop

我已经工作了好几个小时但却找不到错误。也在互联网上搜索但似乎没有解决我的奇怪问题。有点奇怪,因为相同的代码适用于我拥有的不同应用程序。唯一不同的是我现在连接到Sybase,之前的应用程序连接到MySQL。以下是我在DB类中的内容:

class DB{
    private static $_instance = null;
    private function __construct(){
        try{
            $this->_pdo = new PDO ("dblib:host=host:port;dbname=myDb","username","pwd");
            echo 'Connected';
        }
        catch(PDOException $e){
            die($e->getMessage());
        }
    }

    public static function getInstance(){
        if(!isset( self::$_instance )){
            self::$_instance = new DB();
        }

        return self::$_instance; //this line generates 500 internal server error in browser console
    }
}

我在index.php中的代码

echo DB::getInstance();

输出单词" Connected"但同时在我的浏览器控制台中产生500代码错误。我真的不明白为什么return self::$_instance遇到问题。当我return 'test'时没有生成错误。我知道我错过了一些东西,但我无法理解为什么。我在Ubuntu上使用PHP 5.3。提前谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 查看错误日志。您会在那里看到详细的错误消息; Apache面临的500错误在这里没有意义。
  2. echo 很可能是问题所在。 DB::getInstance应该返回一个对象,你不能回复"对象。您在错误日志中找到的错误很可能"无法将对象转换为字符串"。