PHP调用静态函数失败

PHP调用静态函数失败,php,static,Php,Static,全部, 下面的代码出现错误。下面是我收到的错误消息: 注意:第15行的C:\wamp\www\Projetv0.2\Model\u User.php中的未定义变量:userDAO 然后 致命错误:对C:\wamp\www\Projetv0.2\Model\u User.php第15行的非对象调用成员函数checkRecordExists() 相关代码如下。我试图用代码做的是使用一个唯一的类(DAO_DBrecord)来访问数据库中的多个表。在下面的例子中,我想访问我的users表。为此,我在DA

全部,

下面的代码出现错误。下面是我收到的错误消息:
注意:第15行的C:\wamp\www\Projetv0.2\Model\u User.php中的未定义变量:userDAO

然后
致命错误:对C:\wamp\www\Projetv0.2\Model\u User.php第15行的非对象调用成员函数checkRecordExists()

相关代码如下。我试图用代码做的是使用一个唯一的类(
DAO_DBrecord
)来访问数据库中的多个表。在下面的例子中,我想访问我的
users
表。为此,我在
DAO_DBrecord
类中创建了一个特定的静态函数
createUserDAO
,该函数使用正确的表名
users
调用构造函数。然而,它不起作用,我也不明白为什么

Model_User.php:

<?php
    require_once('Class_DB.php');
    require_once('DAO_DBrecord.php');

    class Model_user{ // Represents a connection to the users table in the DB
        private $db;
        private $userDAO;

        function __construct($db){
            $this->db=$db;
            $userDAO=DAO_DBrecord::createUserDAO($this->db);//  static function - calls constructor w/ 'user' table name parameter
            $this->userDAO=$userDAO;
        }
        function userInfoExists($userInfo, $colName){
            return $userDAO->checkRecordExists($userInfo, $colName);
        }
//Other stuff
    }
?>

DAO_DBrecord.php:

<?php
    require_once('Class_DB.php');

    class DAO_DBrecord {
        private $db;
        private $table;

        private function __construct($db,$table){
            $this->db=$db;
            $this->table=$table;
        }

        public static function createUserDAO($db) {
            return new DAO_DBrecord($db, 'users');
        }
//Other stuff
    }
?>

谢谢大家的帮助


JDelage

这不是静态函数的问题。问题是PHP没有隐式的
$this
。当您在类中引用成员变量时(就像您在
userInfoExists
中一样),您必须说
$this->userDAO
,而不仅仅是
$userDAO


当然,所有这些都假定
DAO_DBrecord
类具有或继承了
checkRecordExists
函数。如果没有,您将有其他问题。

Doh。。。非常感谢。总是最愚蠢的错误让我抓狂。