Fragen zur Objektorientierung - Wo die Logik unterbringen?

Ja, verstehe ich.

Boah, irgendwie hat sich in den letzten Jahren ne Menge bei PHP getan.

Was bedeuten denn diese beiden Zeilen:
PHP:
return $valid ? new User($name) : false;
-> wenn $valid true ist, soll ein neuer User zurückgegeben werden? Was macht das : false; ?

und
PHP:
$user = UserValidator::getUser($name, $passwod)

Die Syntax mit den beiden Doppelpunkten kenne ich nicht. Für mich wäre es: UserValidator->getUser();

Danke für deine Hilfe!
 
Zum ersten Beispiel: das ist der Trinitätsfaktor. Dieser funktioniert wie eine einfache IF-THEN-ELSE-Anweisung. Das heißt, dass geprüft wird, ob das vor dem Fragezeichen wahr ist, wenn dem so ist, wird das zwischen Fragezeichen und Doppelpunkt ausgeben, ansonsten das nach dem Doppelpunkt.

Und das Zweite ist eine statische Methode. Es wird also auf die statische Methode getUser() der Klasse UserValidator zugegriffen ohne dabei eine Instanz der Klasse UserValidator zu erstellen.
 
1) Richtig.
Bedinung ? true : false

2)
getUser() habe ich als statische Funktion definiert. Darum brauchte ich auch keine Instanz der UserValidator-Klasse. :: braucht man für die Statischen Funktionen

Hier mal ein Kurzbeispiel
PHP:
class Test{
    static function staticFunc($var){ return "statisch: {$var}<br />";}
    function normalFunc($var){ return "normal: {$var}<br />";}
}

echo Test::staticFunc('foo');
$obj = new Test();
echo $obj->normalFunc('bar');
 
Hallo,
ich habe mal wieder eine Frage zu diesem Thema. Der User loggt sich ein, die Input-Parameter werden an einen Validator gegeben, dieser führt SQL Statements aus und überprüft, ob der User die richtigen Eingaben getätigt hat.

PHP:
$validator = new userValidator();
$validator->username = $_POST['umail'];
$validator->password = $_POST['passwort'];
$validator->checkLoginParm();

PHP:
class userValidator {

protected $username;
protected $password;

public function checkLoginParm() {	
	$emailValid = $this->checkEmail();
	$pwValid = $this->checkPassword();
	
	if ($emailValid != true || $pwValid != true) {
		 throw new Exception("Die Login-Parameter sind falsch.", 21);
	} else {
		return ($emailValid == true && $pwValid == true) ? true : false;
	}
}

Kann ich es auch so machen, dass aus der function checkLoginParm() beispielsweise, der gültige User als Objekt zurückgegeben wird? Dann kann ich das Objekt in der Session speichern und immer auf die E-Mail und den Usernamen zugreifen. Aber dazu muss ich den Constructor in der User-class so anpassen, dass ein neuer User mit eMail und PW erzeugt wird, oder?

Für die weiteren Attribute, die bei der Registrierung angegeben wurden, nicht aber beim Login muss ich noch in der User-Klasse Funktionen unterbringen, die per MySQLi die Infos aus der DB holen, richtig?

Danke!
 
Zurück