borisbaer: Generierung von Properties zur Handhabung von POST-Daten

Beitrag lesen

Hallo zusammen,

ich habe nun bereits einige Möglichkeiten gesehen, wie man zwecks der Erstellung einer Sign-up- bzw. Login-Funktion mit den POST-Daten des jeweiligen Formulars umgeht:

  1. Properties in der Model-Klasse setzen à la
public string $username = '';
public string $email = '';
public string $password = '';

Dann in der Controller-Klasse die Werte zuordnen:

$user -> username = $_POST['username'];
$user -> email = $_POST['email'];
$user -> password = password_hash( $_POST['password'], PASSWORD_DEFAULT );
  1. Eine Funktion in der Model-Klasse haben, welche die Daten bei Bedarf lädt, z.B.
public function loadData( array $data ): void
{
	foreach ( $data as $key => $value )
		if ( property_exists( $this, $key ) )
			$this -> { $key } = $value;
}
  1. Schon bei der Instanziierung der Model-Klasse die Properties mithilfe eines Constructors definieren lassen:
$user = new User( $_POST );
public function __construct( $body )
{
	foreach ( $body as $key => $value )
		$this -> $key = $value;
	$this -> password = password_hash( $this -> password, PASSWORD_DEFAULT );
}

Nun frage ich mich, welche denn die angemessene Umsetzung darstellt. Sicherlich verursacht die letzte Methode den geringsten Code. Jedoch scheint hier Type Hinting nicht möglich zu sein, ebensowenig ein Festlegen der Sichtbarkeit (public, protected, private). Bei Letzterem verstehe ich die Sinnhaftigkeit in Bezug auf POST-Daten aber ohnehin nicht wirklich. Auch wird bei der dritten Methode einfach alles an POST-Daten übermittelt und ich kann nicht entscheiden, welchen Wert man setzt und welchen nicht. Aber in der Regel sollen ja bei solchen Formularen eh alle Werte gesetzt werden. Ihr merkt, ich tendiere zur dritten Option.

Ich wäre sehr dankbar für ein wenig Aufklärung!

Grüße
Boris 🧸