PHP类引用PDO对象

时间:2011-12-26 14:43:52

标签: php pdo

我正在创建2个Class,而从1个类我将另一个类称为PDO对象。但是当我引用该类的任何字符串时,而不是当PDO对象时。有任何想法吗? 这是我的代码

class Connection
    {
        private $dbcc;
        public function Fn_Db_Conn()
        {
            $this->dbcc = new  PDO( "mysql:host=localhost;dbname=db1;",
             "root","pass1");
            return $this->dbcc;
        }
    }
    class Registration
    {
        private $Username;
        private $dbc;
        public function Registration($Un)
        {
            $this->Username = $Un;
            $this->dbc = new Connection;
            $this->dbc->Fn_Db_Conn();
        }
        public function Fn_User_Exist()
        {

            $Qry = "SELECT * FROM CMT_Users WHERE Username=@Username";
            $Result = $this->dbc->prepare($Qry);
            $Result->bindParam("@Username",$this->Username);
            $Result->execute();
            print $Result->rowCount();
        }
    }

1 个答案:

答案 0 :(得分:3)

class Connection
{
    private $_dbcc;
    public function getConnection()
    {
       return $this->_dbcc;
    }
    public function __construct()
    {
        $this->_dbcc = new  PDO( "mysql:host=localhost;dbname=db1;",
             "root","pass1");
    }
}
class Registration
{
    private $_username;
    private $_dbc;


    public function __construct($un)
    {
        $this->_username = $un;
        $this->_dbc = new Connection();
    }
    public function Fn_User_Exist()
    {

        $qry = "SELECT * FROM CMT_Users WHERE Username=@Username";
        $result = $this->_dbc->getConnection()->prepare($qry);
        $result->bindParam("@Username",$this->_username);
        $result->execute();
        print $result->rowCount();
    }
}

我还修改了Connection类以在构造函数中创建PDO对象,并添加了一个用于访问PDO对象的getConnection方法。

您应该使用__construct关键字作为构造函数,命名构造函数,因为类名是旧语法,并且使代码更难编辑。

最后一点,它取决于人,但我更喜欢用下划线_预先设置受保护和私有属性或方法,这样我们就可以轻松识别方法/属性是否可以在类外访问。您应该避免使用像Result这样的变量,因为PHP区分大小写,因此Result不等于result,所以最好避免拼写错误以保持变量名称为小写(appart when you want做camelCase)。