Ik wil een Person class gaan maken, en nu vraag ik me af welke properties daarbij horen.
Volgens mij heeft ieder persoon in ieder geval een:
- first name
- last name
- gender
- birthday
- dying day * (optioneel)
- social security number (optioneel)
- description (optioneel)
* Weet iemand het Engelse woord voor sterfdag? Google Translate zegt "anniversary", maar dat lijkt me meer een verjaardag. Ik zie ook "dying day". Is dat correct?
Zijn er nog meer properties waar ik nog niet aan heb gedacht, maar die wel bij een Person horen?
Ozzie, en waar wil je dit dan voor gebruiken? Het is echt zinloos om een klasse te maken waarvoor je nog geen doel hebt. Stel je wilt voor je security systeem van je framework een soort van basis hebben voor de user die je beveiligt, dan gebruik je een UserInterface oid. Maar zomaar een klasse volgooien met allemaal properties die je de ene keer wel en de andere keer niet gebruikt is echt zinloos. Want wat de user klasse dan allemaal nog meer nodig heeft:
- Oogkleur
- Lichamelijke klachten
- Allergiën
- Haarkleur
- Zijn DNA
- Merk kleren
- Favoriete TV show
- Kleur van de auto
- Partner
- Kinderen
- Kleinkinderen
- Overkleinkinderen
- Misschien heeft die overoverkleinkinderen
- Overgrootvader
- Grootvader
- Overgrootmoeder
- Grootmoeder
- Sportvereniging
- Muziekvereniging
- Kerkelijk
- ...
Hey Wouter. Mja, k snap wat je bedoelt... ik wil een soort basis hebben, maar misschien kan ik er inderdaad beter eerst alleen de dingen inzetten die ik zeker nodig heb.
@Reshad: dat was mijn vraag... of ik die nodig heb. Stel de gebruiker wil zijn wachtwoord wijzigen. Dan moet ie eerst z'n huidige wachtwoord invoeren. Dat zou ik dan uit de User class kunnen opvragen. Is dat gebruikelijk? Of ga je dan aan de hand van de user-id in de database opzoeken of het wachtwoord klopt?
Beide manieren zullen werken, maar ik vraag me dus af wat de gebruikelijke gang van zaken is.
Ward, dat moet nog gebeuren. Maar in principe kan ik in de User class stoppen wat ik zelf wil. Het is meer de vraag wat gebruikelijk is. Heeft een User class normaal gesproken een "getPassword" method?
Het gevaar van een getPassword() is natuurlijk dat het op een gegeven moment een public function getPassword() wordt. Dan staat de achterdeur al half open.
Je hoeft niet per se een property $Password en een getter getPassword() te hebben. Het kan vereenvoudigd bijvoorbeeld ook zo:
<?php
class User
{
private $UserID;
private $FirstName;
public function __construct($user_id = null, $first_name = null)
{
$this->UserID = $user_id;
$this->FirstName = $first_name;
}
}
class UserMapper
{
public static function findByUsernameAndPassword($username, $password)
{
$dbh = new DB();
$stmt = $dbh->prepare('
SELECT
user_id, first_name
FROM
users
WHERE
username = :1
AND
password = SHA1(:2)
');
// Enzovoort totdat we een user uit de database te pakken hebben:
return new User($row['user_id'], $row['first_name']);
}
}
?>