Faker est une bibliothèque open source créée par François Zaninotto qui génère des données de remplissage artificiel pour votre application et ses besoins en matière de test..
Faker peut être utilisé dans une application PHP vanille, un framework tel que Yii ou Laravel, ou dans une bibliothèque de test telle que celle mentionnée avec Codeception dans ce didacticiel précédent d'Envato Tuts +..
Dans le tutoriel d'aujourd'hui, je vais passer en revue l'installation et l'utilisation de base de Faker et de ses fonctionnalités. Comme le dit Zaninotto:
"Que vous deviez amorcer votre base de données, créer de beaux documents XML, compléter votre persistance pour la soumettre à un test de résistance, ou anonymiser des données provenant d'un service de production, Faker est fait pour vous."
Et, dans l’ensemble, il offre un large éventail de fonctionnalités simples, utiles pour tout régime de test..
Un petit rappel avant de commencer, je participe aux commentaires ci-dessous. Je suis particulièrement intéressé si vous avez des idées supplémentaires ou si vous souhaitez suggérer des sujets pour de futurs tutoriels. Si vous avez une question ou une suggestion de sujet, veuillez poster ci-dessous. Vous pouvez également me joindre directement sur Twitter @reifman.
J'ai commencé par créer un nouvel arbre de code et en ajoutant fzaninotto / faker
à composer.json ci-dessous:
"name": "Démonstration Faker", "description": "pour Envato Tuts +", "keywords": ["faker", "php", "jeff reifman"], "homepage": "http: // www. lookahead.io/ "," type ":" projet "," licence ":" BSD-3-Clause "," stabilité minimale ":" stable "," require ": " php ":"> = 5.6. 0 "," fzaninotto / faker ":" * ""
Ensuite, j'ai mis à jour le compositeur:
$ composer update Chargement des référentiels Composer avec les informations de paquet Mise à jour des dépendances (y compris require-dev) - Installation de fzaninotto / faker (v1.6.0) Chargement à partir du cache Écriture de fichier de verrouillage Génération de fichiers à chargement automatique
Faker est installé dans le répertoire du fournisseur. Alors, j'ai chargé en haut d'un fichier index.php:
Ensuite, je voulais essayer quelques exemples de scénarios simples de génération de données..
Exemples simples
J'ai étendu les exemples de Faker comme suit et les ai exécutés à partir de http: // localhost: 8888 / faker:
prénom; // 'Lucy Cechtelar'; espaceur (); echo $ faker-> adresse; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" spacer (); echo $ faker-> text; // Dolores as sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit // et sit et mollitia sed. // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium // sit minima sint. espaceur (); fonction spacer () echo '
'; ?>Avec des rafraîchissements rapides, on m'a présenté des résultats variés tels que:
Ruthie Beier 37851 Gusikowski Appartement, Suite 594 Port Keithmouth, Nouveau-Mexique 06110 Signaler un abus sur un ordinateur de bureau. Erreur maiores qui vero non omnis. Quaerat mollitia dolore deserunt quia quidem beatae.Et:
Darron Hessel 657 Elijah Lock Suite 202 Nitzschemouth, AZ 11166 Culpa dolorum quidem distinctio eius necessitatibus. Mollitia ut nostrum et ut quas veniam et. Unde jure molestiaer aperiam fuga voluptatibus quo.Et:
Fredy Fadel MD 53328 Eldora Isle Apt. 634 West Eleanore, CA 95798-3025 Eligendi eos laudantium eveniet ad. Qui a voluptatibus est quia voluptatem. Dolorum pariatur quaerat nulla.Faker tient ses promesses.
Les fournisseurs par défaut de Faker
Toutes les méthodes de génération de données dans Faker sont créées à partir de la mise en œuvre des fournisseurs. Voici le code qui enregistre les fournisseurs par défaut de Faker - c'est fait pour vous:
addProvider (new Faker \ Provider \ en_US \ Person ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ Address ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ PhoneNumber ($ faker)); $ faker-> addProvider (new Faker \ Provider \ en_US \ Company ($ faker)); $ faker-> addProvider (nouveau Faker \ Provider \ Lorem ($ faker)); $ faker-> addProvider (nouveau Faker \ Provider \ Internet ($ faker));Donc ci-dessus, quand j'ai demandé un
adresse
de Faker, il a cherché dans tous les fournisseurs les méthodes qui correspondent, en utilisant finalement leAdresse()
fournisseur.Vous pouvez également écrire vos propres fournisseurs ou parcourir plusieurs extensions de Faker disponibles sur le Web..
Modificateurs
Faker propose également des modificateurs spéciaux facilitant vos tests, tels que unique (), optionnel () ou valide (). Par exemple, vous pouvez générer des numéros uniques:
// unique () force les fournisseurs à renvoyer des valeurs uniques $ values = array (); pour ($ i = 0; $ i < 10; $i++) // get a random digit, but always a new one, to avoid duplicates $values []= $faker->unique () -> randomDigit; print_r ($ values);Voici le résultat de valeurs uniques:
Tableau ([0] => 7 [1] => 6 [2] => 0 [3] => 2 [4] => 5 [5] => 1 [6] => 8 [7] => 4 [8] => 9 [9] => 3)Si vous utilisez le
optionnel()
méthode, certains numéros seront retournés sous forme deNUL
comme si l'utilisateur n'avait pas saisi de champ dans votre formulaire. Remarque: cette méthode ne fonctionnait pas correctement.Avec
valide()
, vous pouvez enregistrer des fonctions qui déterminent si les données de remplissage répondent à des exigences spécifiques, renvoient une erreur ou génèrent un message d'erreur sur un formulaire utilisateur.Explorer les fournisseurs
Faker propose un large éventail de méthodes pour générer des données aléatoires pour votre application:
Essayons un peu plus de ces méthodes.
Le code ci-dessous génère dix personnes, leurs informations de carte de crédit et leurs codes de sécurité:
$ faker = Faker \ Factory :: create (); pour ($ i = 0; $ i<10;$i++) $cc = $faker->creditCardDetails; $ cc ['security'] = $ faker-> numberBetween (199 499); var_dump ($ cc); spacer (2);
Voici quelques résultats du code ci-dessus:
Voici un exemple simple de génération d'image:
$ faker = Faker \ Factory :: create (); $ width = 320; $ hauteur = 240; écho '';
Mais vous pouvez aussi générer des chats:
écho '';
C'est peut-être la capacité de génération de chat qui m'a conquis. Je ne peux pas attendre pour l'impression en trois dimensions et l'activation de l'âme pour travailler avec des choses comme ça.
Avec le code ci-dessous, j'ai créé un tableau avec quatre colonnes de noms provenant de France, de Russie, d'Amérique et de Chine:
écho '
français | russe | Anglais | chinois |
---|---|---|---|
'; $ faker = Faker \ Factory :: create ('fr_FR'); // crée un faux français pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); spacer (2); écho ' | '; $ faker = Faker \ Factory :: create ('Ru_RU'); // créer le russe pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); spacer (2); écho ' | '; $ faker = Faker \ Factory :: create ('En_US'); // crée l'anglais pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); spacer (2); écho ' | '; $ faker = Faker \ Factory :: create ('zh_CN'); // crée le chinois pour ($ i = 0; $ i < 10; $i++) echo $faker->prénom; espaceur (); écho ' |
Voici le résultat:
Voici un exemple de code permettant de générer 25 adresses électroniques factices de fournisseurs gratuits tels que Gmail et Yahoo:
$ valeurs = tableau (); pour ($ i = 0; $ i < 25; $i++) // get a random digit, but also null sometimes $values []= $faker->freeEmail (); print_r ($ values); sortie;
Voici le résultat obtenu:
Faker offre un exemple utile de génération de XML; Cependant, cela nécessite que vous travailliez avec un framework et ayez une architecture de vue:
booléen (25)):?> streetAddress?> ville?> code postal?> état?> booléen (33)):?> booléen (15)):?>bs?> booléen (33)):?> text (400)?>]]>
J'espère que cela vous a servi d'introduction de base à Faker, une bibliothèque PHP gratuite et open source incroyablement utile.
Si vous voulez lire davantage, je vous recommande le contenu du remplissage: outils, astuces et exemple dynamique (Envato Tuts +) de Jim Nielsen, qui fournit aux concepteurs d’applications de générer des données. Il suggère que vous puissiez être plus efficace lorsque vous appliquez de fausses données pour créer une expérience plus réaliste au cours de votre processus de conception..
Si vous souhaitez savoir quand mon prochain tutoriel Envato Tuts + arrive, suivez-moi @reifman sur Twitter ou consultez ma page d'instructeur. Actuellement, je travaille sur deux séries que vous apprécierez peut-être: