RogierBe / educom-webshop-basis-1699355256

0 stars 0 forks source link

Een hele user file in geheugen inlezen is bad practice #21

Open JeroenHeemskerk opened 10 months ago

JeroenHeemskerk commented 10 months ago

In de code hieronder lees je de hele user file (uitgesplitst) in het geheugen https://github.com/RogierBe/educom-webshop-basis-1699355256/blob/f21e2261a5553f3bcb6300204e98bf28e022e76f/data/dataRead.php#L23-L32 Dit is een bad practice, wat als we 10.000 users hebben of 1.000.000 users?

Het is beter om al een email mee te geven waar je naar op zoek bent en dan regel voor regel te controleren of dit de juiste regel is en daarna door te gaan met de volgende regel en de vorige regel te vergeten.

function findUserByEmail($email) {
   $userFile =  openFileRead();
   while(!feof($userFile)) { // zijn we bij nog niet bij het einde van de file?
      $row = fgets($userFile); // lees 1 regel
      $parts = explode ('|', $row) // deel deze op in stukken
      if ($parts[0] == $email) { // is deze regel degene die we zoeken?
         fclose($userFile);
         return array('email' => $parts[0], 'name' => $parts[1], 'password' => $parts[2]); // geef de data terug als een associatieve array, zodat als de structuur van de file veranderd, dat je dat niet verder dan deze file hoeft aan te passen
      }
    }
    fclose($userFile);
    return NULL;
}