为什么$ db PDO对象在构造函数参数中作为null传递?

时间:2013-05-16 02:28:28

标签: php database constructor pdo null

我想知道为什么在下面的PHP代码中,PDO对象$ db被传递为NULL。即构造函数参数中的$db=NULL

class ColoredListsUsers
{
    /**
     * The database object
     * @var object
     */
    private $_db;

    /**
     * Checks for a database object and creates one if none is found
     * @param object $db
     * @return void
     */
    public function __construct($db=NULL) /* why is #db passed as null here ? */
    {
        if(is_object($db))
        {
            $this->_db = $db;
        }
        else
        {
            $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME;
            $this->_db = new PDO($dsn, DB_USER, DB_PASS);
        }
    }
}

早期$ db被声明为PDO对象:

// Create a database object
    try {
        $dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME;
        $db = new PDO($dsn, DB_USER, DB_PASS);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
        exit;
    }

将$ db作为PDO对象然后将其作为null传递似乎没有意义.... 代码来自http://www.copterlabs.com/blog/creating-an-app-from-scratch-part-5/

1 个答案:

答案 0 :(得分:3)

public function __construct($db=NULL)表示$db is an optional parameter。如果未指定,则将使用默认的NULL值。

在这种情况下 - 查看下面的几行,else正文 - 创建默认连接。