Zugriff auf Variable in anderer Methode?

SuReBuRn

Mitglied
Also, ich rufe die klasse so auf, welch wunder :):

PHP:
$user = new User($userID);

in der User.class.php steht:
PHP:
class User {


	public function __construct($userID, $username = null, $email = null) {
		echo "DEBUG1: ".$userID."<br />";
	}


	public function checkPassword($password) {
		global $db;
		$sql = "SELECT 	userID, username, password
			FROM 	x_user
			WHERE 	userID = '".intval($this->userID)."'"; // obsolete: self::$userID
			
		try {
			$recordSet = $db->Execute($sql);
		} catch (exception $e) { 
			var_dump($e); 
			adodb_backtrace($e->gettrace());
		}
		print "DEBUG3: ".$recordSet->fields['password'];
		if ($recordSet->fields['password'] == $password) return 1;
	}
	
	
}

Die Methode wird dann so aufgerufen:
PHP:
$user->checkPassword($loginPassword)

Wie komm ich bei der Methode checkPassword nun an $userID ran? $userID und $this->userID geht nich, also wie? :(

Fehlermeldung:
Code:
Notice: Undefined property: User::$initUser in /var/www/htdocs/lib/User.class.php on line 106

Notice: Trying to get property of non-object in /var/www/htdocs/lib/User.class.php on line 106
 
Zuletzt bearbeitet:
Guten Morgen,

um eine Variable die du der Klasse übergibts, später auch auslesen kannst, musst du diese natürlich in deiner Klasse abspeichern. (Membervariable)
Dazu schreibst du dann noch eine Funktion, welche dir diese Membervariable zurück gibt.

Hier ein modifiziertes Beispiel deiner Klasse:

PHP:
<?php
/**
 * Manuel Freiholz / www.gainwar.de
 * http://www.tutorials.de/forum/php/293558-zugriff-auf-variable-anderer-methode.html 
 */

class User {

    // Member Variablen
    var $m_id;
    var $m_name;
    var $m_email;

    public function __construct($userID, $username = null, $email = null) {
        echo "DEBUG1: ".$userID."<br />";
        
        $this->m_id = $userID; // Zuweisung der Membervariablen.
    }


    public function checkPassword($password) {
        global $db;
        $sql = "SELECT     userID, username, password
            FROM     x_user
            WHERE     userID = '".intval($this->userID)."'"; // obsolete: self::$userID
            
        try {
            $recordSet = $db->Execute($sql);
        } catch (exception $e) { 
            var_dump($e); 
            adodb_backtrace($e->gettrace());
        }
        print "DEBUG3: ".$recordSet->fields['password'];
        
        // Modifiziert: Setze die Membervariable m_name.
        // Das gleiche sollte auch mit E-Mail passieren.
        if ($recordSet->fields['password'] == $password)
        {
          $this->m_name = $recordSet->fields['username'];
          return 1;
        }
        else
        {
          return 0;
        }
    }
    
    // Funktion um die ID des Benutzers zurückzugeben.
    // Das gleiche sollte auch für die anderen Variablen (name,email) erstellt werden.
    public function getId()
    {
      return $this->m_id;
    }
    
    
}

// --
// TEST
// --

$myUser = new User( 1234 );
echo "Der Benutzer hat die ID: " . $myUser->getId();

?>

Gruß Manuel
 
Zurück