Класс PHP, ссылающийся на объект PDO - PullRequest
2 голосов
/ 26 декабря 2011

Я создаю 2 класса, а из 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 Ответ

3 голосов
/ 26 декабря 2011
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 в конструкторе и добавил метод getConnection для доступа к объекту PDO.

Вы должны использовать ключевое слово __construct для конструктора, присваивая имяконструктор в качестве имени класса является старым синтаксисом и усложняет редактирование кода.

Последнее замечание, это зависит от людей, но я предпочитаю добавлять защищенные и закрытые свойства или методы с подчеркиванием _,таким образом, мы можем легко определить, доступен ли метод / свойство за пределами класса или нет.Вам следует избегать использования таких переменных, как Result, потому что PHP чувствителен к регистру, поэтому Result не равен result, поэтому лучше избегать опечаток, чтобы имя переменной оставалось в нижнем регистре (аппартируйте, если вы хотите использовать camelCase).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...