0

現在、使用ログインを書き換えて、OOP を学習しようとしています。次のようなエラーが表示され続けます。

Fatal error: Call to a member function prepare() on a non-object in /var/www/new.php on line 22

誰かが私が間違っていたことを指摘できますか? また、これは明らかなバグ以外に、これまでのところ良い OOP コーディング プラクティスのように見えますか?

<?php  
ini_set('display_errors', TRUE);
require 'resources/library/DB.php';

    class DataBase
    {
        private $conn = null;

        public function __construct($conn)
        {
            $this->conn = $conn;
        }

            public function setConn($conn)
        {
            $this->conn = $conn;
            return $this;
        }

       public function retrievePassword($userNAme) 
       {
       $stmt = $this->conn->prepare('SELECT `password` FROM `users` WHERE `userName`= :userName');
       $stmt->bindValue(':userName', $userNAme);
       $stmt->execute();
       $salt = $stmt->fetchColumn();

       return $salt;
}
        }
    $db = new DataBase($conn);
    echo $db->retrievePassword('testuser');

?>  
4

2 に答える 2

3

コンストラクタが正しくありません。

正しい PHP コンストラクターは次のとおりです。

__構造。

したがって、new Database($pdo) を呼び出すと、代入を行わないデフォルトのコンストラクターが使用されます。

于 2013-09-21T05:46:19.037 に答える
0

あなたはにあなたを渡していませ$connretrievePassword()

だから、それが何であるかをおそらく知らないconn

于 2013-09-21T05:45:37.877 に答える