2011-10-17 39 views
-1

我最近開始在php中編寫代碼,並且正在學習面向對象的PHP。 我也碰到過,我似乎無法讓我的頭一輪出錯的問題:PHP OO調用非對象

Fatal error: Call to a member function verify_Username_And_Password() on a non-object in C:\wamp\www\sso\lib\UserManagement.php on line 57

據我所知,該方案似乎認爲MySQL的類變量是空的,但不是爲什麼當它被實例化。

函數verify_Username_And_Password($ username,$ password)是在Mysql類中定義的。

以下是來自UserManagement.php的代碼,包含不需要的部分。

<?PHP 
require_once 'lib/Mysql.php'; 

class UserManagement { 
    private $mysql; 

    function __construct(){ 
     session_start(); 
     $this->manage_Session(); 
     $this->mysql = new Mysql(); 
    } 

    function validate_User ($username, $password){ 
     $user_Check = $this->mysql->verify_Username_And_Password($username, md5($password)); 

     if($user_Check) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

我必須在PHP中丟失一些基本的OO。我會很感激任何人都可以提供的建議。如果需要,我會很高興發佈更多代碼。

按此處要求是: Mysql.php pastebin。 UserManagement.php pastebin

+0

你能告訴我們Mysql.php代碼 –

+0

你可以發佈構造UserManagement對象並調用'validate_User()'的代碼嗎? – bcmcfc

+0

我看不出有什麼明顯的錯誤,但它意味着'$ this-> mysql'沒有被設置 - 或者它已被設置,然後被代碼中其他地方的代碼覆蓋。 「Mysql.php」文件中有什麼?有沒有其他地方'$ this-> mysql'被覆蓋? –

回答

0

如果沒有看到完成這項工作的代碼,我的猜測就是你在使用validate_User方法而沒有首先構造一個UserMangement對象。

$um = new UserManagement(); 
$um->validate_User($username, $password); 

如果你想打電話validate_User沒有首先構建它需要一個static method一個UserManagement對象。如果沒有構建UserManagement對象,Mysql永遠不會構造並保存在類中的屬性中。

+0

構建了用戶管理類,但是正在考慮您所說的和再次通過UserManagement類的內容。 manage_Session使用validate_User,變量是空的,因爲它正在嘗試在調用manage_Session()之後創建它。幾個小時拉出我的頭髮,把一行代碼放在錯誤的地方。非常感謝您的幫助,對不起,這真是一個愚蠢的錯誤。 –

相關問題