Het toevoegen van extra properties aan een class object
Die vul ik met gegevens, die ik vervolgens in een json object gooi.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Customer implements JsonSerializable {
public $firstName;
public $middleName;
public $lastName;
public $email;
public $phoneMobile;
public $gender;
public $zipcode;
public $city;
public $address;
public $houseNumber;
public $houseNumberExtension;
public $birthDate;
public $iban;
public $setAVG;
public function __construct($data){
$this->firstName = $data['fname'];
$this->middleName = $data['prefix'];
$this->lastName = $data['lname'];
$this->email = $data['email'];
$this->phoneMobile = $data['phone'];
$this->gender = $data['gender'];
$this->zipcode = $data['zipcode'];
$this->city = $data['place'];
$this->address = $data['street'];
$this->houseNumber = $data['houseNumber'];
$this->houseNumberExtension = $data['extension'];
$this->birthDate = $data['birthdate'];
$this->iban = strtoupper(str_replace(" ", "", $data['iban']));
$this->setAVG = $data['avg'];
}
public function jsonSerialize() {
return [
"FirstName"=> $this->firstName,
"MiddleName"=> $this->middleName,
"LastName"=> $this->lastName,
"Email"=> $this->email,
"PhoneMobile"=> $this->phoneMobile,
"Gender"=> $this->gender,
"Zipcode" => $this->zipcode,
"City"=> $this->city,
"Address" => $this->address,
"HouseNumber" => $this->houseNumber,
"HouseNumberExtension" => $this->houseNumberExtension,
"BirthDate"=> $this->birthDate,
"IBAN"=> $this->iban,
"SetAVG"=> $this->setAVG,
"Country"=> 'Nederland',
"Language"=> 'nl_NL',
"UseValidation" => true,
"IsValidated" => true,
];
}
}
public $firstName;
public $middleName;
public $lastName;
public $email;
public $phoneMobile;
public $gender;
public $zipcode;
public $city;
public $address;
public $houseNumber;
public $houseNumberExtension;
public $birthDate;
public $iban;
public $setAVG;
public function __construct($data){
$this->firstName = $data['fname'];
$this->middleName = $data['prefix'];
$this->lastName = $data['lname'];
$this->email = $data['email'];
$this->phoneMobile = $data['phone'];
$this->gender = $data['gender'];
$this->zipcode = $data['zipcode'];
$this->city = $data['place'];
$this->address = $data['street'];
$this->houseNumber = $data['houseNumber'];
$this->houseNumberExtension = $data['extension'];
$this->birthDate = $data['birthdate'];
$this->iban = strtoupper(str_replace(" ", "", $data['iban']));
$this->setAVG = $data['avg'];
}
public function jsonSerialize() {
return [
"FirstName"=> $this->firstName,
"MiddleName"=> $this->middleName,
"LastName"=> $this->lastName,
"Email"=> $this->email,
"PhoneMobile"=> $this->phoneMobile,
"Gender"=> $this->gender,
"Zipcode" => $this->zipcode,
"City"=> $this->city,
"Address" => $this->address,
"HouseNumber" => $this->houseNumber,
"HouseNumberExtension" => $this->houseNumberExtension,
"BirthDate"=> $this->birthDate,
"IBAN"=> $this->iban,
"SetAVG"=> $this->setAVG,
"Country"=> 'Nederland',
"Language"=> 'nl_NL',
"UseValidation" => true,
"IsValidated" => true,
];
}
}
Nu komt er iets nieuws. Als iemand minder jarig is (dit word met JS gedaan) dan komt er een extra email veld bij in het formulier voor ouder/voogd. Op het moment dus dat `$_POST['EmailCaregiver']` bestaat/aanwezig is, wil ik die meegeven in het customer object.
Wat is een handige manier om dit voor elkaar te krijgen?
Gewijzigd op 24/01/2023 10:48:54 door Jorn Reed
Gewoon altijd meegeven met de json en tonen indien nodig
Jorn, kan je de code ook in dit topic delen, tussen code-tags?
heb het even aangepast! :)
De array keys in het data argument hebben een andere naamgeving dan je class properties. Daardoor moet je alles letterlijk handmatig toekennen. Als ze overeen zouden komen, kon je die toekenning in de constructor gewoon met een foreach doen.
Je hebt geen enkele check op het argument van je constructor. Je weet dus niet of alle keys in je $data argument wel bestaan. Ik kan me bijvoorbeeld goed voorstellen dat middleName weinig voorkomt.
Je hebt een method jsonSerialize die een associatieve array teruggeeft. Dat is een verwarrende naam voor die functie, want ik zou verwachten dat er een geserializede JSON string geretourneerd zou worden.
Jorn Reed op 24/01/2023 10:14:13:
Als iemand minder jarig is (dit word met JS gedaan)
Die moest ik 3x lezen.
Minder dan 1x per jaar jarig? (geboren op 29 feb of zo?)
Ivo P op 24/01/2023 23:46:23:
Minder dan 1x per jaar jarig? (geboren op 29 feb of zo?)
Ik vermoed eerder een spatie teveel ;-)