Fake-User mit Laravel
Gerade beim Aufbau eines neuen Produkts oder einer neuen Website sind immer wieder Fake-Daten notwendig, um verschiedene Szenarien durchzuspielen oder zu testen. Dafür gibt es die PHP-Bibliothek Faker, die unter https://github.com/FakerPHP/Faker zu finden ist. Sie ist der Nachfolger des nicht mehr gepflegten Pakets fzaninotto/faker und in neuen Laravel-Projekten bereits enthalten. In anderen Projekten wird die Bibliothek einfach mit folgendem Befehl in der Kommandozeile eingebunden.
Danach kann z. B. auf die Klasse Factory zugegriffen werden. Um nun Fake-Daten zu erzeugen, muss zuerst eine Instanz der Klasse Factory erzeugt werden. Der Faker unterstützt auch viele länderspezifische Daten, wie Namen, Adressen oder Kontonummern. Im folgenden Beispiel wird eine Instanz mit länderspezifischen Daten für Österreich erzeugt.composer require --dev fakerphp/faker
In Laravel steht seit Version 10 auch der Helper fake() zur Verfügung, z. B. fake('de_AT')->name().Bei vielen Projekten werden Benutzerdaten benötigt, da am Anfang natürlich nur intern getestet wird, sind nur wenige Benutzerdaten vorhanden. Damit zumindest ein Set an Benutzern vorhanden ist, können diese mittels Faker erzeugt werden, z. B. in einem Seeder. Wie schon zuvor wird eine Instanz der Klasse Factory mit dem Parameterwert de_AT erzeugt, damit wird sichergestellt, dass Fake-Daten für Österreich erzeugt werden. Danach werden Vorname und Nachname der Person und eine dazugehörige E-Mail-Adresse erzeugt. Zum Schluss werden die neuen Benutzer in der Datenbank gespeichert. Alle Benutzer erhalten das Passwort password, damit ist zum Testen auch eine Anmeldung möglich.// create faker instance$faker = Faker\Factory::create('de_AT');// generate dataecho $faker->name();// Jana Koflerecho $faker->address();// Weidingerweg 64b 8477 Mankecho $faker->bankAccountNumber();// AT026533046435459609
Bei der E-Mail-Adresse könnte auch $faker->email() oder $faker->safeEmail() verwendet werden. Der Nachteil dabei ist, dass die E-Mail-Adresse wirklich nichts mit dem Benutzer zu tun hat.use App\Models\User;use Faker\Factory;use Illuminate\Support\Facades\Hash;// define replacements and number of users$search = ['ä', 'ö', 'ü', 'ß', '´', ' '];$replace = ['ae', 'oe', 'ue', 'ss', '', ''];$signs = '.-_';$num = 100;// generate fake users$faker = Factory::create('de_AT');$password = Hash::make('password');for($i = 0; $i < $num; $i++){$firstName = $faker->firstName();$lastName = $faker->lastName();// custom email address$email = sprintf('%s%s%s@%s',$firstName,$signs[random_int(0, strlen($signs) - 1)],random_int(0, 1) ? $lastName : random_int(10, 9999),$faker->safeEmailDomain());$email = str_replace($search, $replace, mb_strtolower($email));User::create(['name' => $firstName .' '. $lastName,'email' => $email,'password' => $password,]);}
Daher ist hier ein kleiner Codeteil enthalten, der aus dem Vornamen und dem Nachnamen oder einer Zufallszahl eine E-Mail-Adresse erstellt.Lilly Krainer => jasmin26@gmx.at
Es ist natürlich auch möglich, andere Daten zu generieren, wenn man z. B. einen Blog oder ein Forum entwickelt und hierfür Posts oder Kommentare benötigt.Janine Fischer => janine_5339@example.orgBenjamin Schranz => benjamin-schranz@example.org