Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Einführung in die virtuelle Datenfüllung durch Faker (mit Beispielen)
Der Inhalt dieses Artikels befasst sich mit der Methode (Codebeispiel) zum Öffnen eines neuen Seitenlinks in der Miniprogrammentwicklung. Ich hoffe, dass er für Sie hilfreich ist.
Faker ist ein Dummy-Datengenerator, der zum Füllen von Datenbanken für Stresstests oder zum Erstellen eleganter XML-Dokumente verwendet werden kann.
Installation
Wenn das Projekt Composer unterstützt, verwenden Sie den folgenden Befehl, um es zu installieren. Wenn es nicht unterstützt wird, laden Sie bitte den Quellcode aus dem Github-Repository von Faker herunter und legen Sie ihn im Erweiterungspaketordner des Projekts ab.
composer require fzaninotto/faker
Um die Funktionalität zu demonstrieren, habe ich mit dem folgenden Befehl ein neues Projekt erstellt:
// 创建新项目文件夹 mkdir data-seeder cd data-seeder // 安装 faker 扩展 composer require fzaninotto/faker
Grundlegende Verwendung
Erstellen Sie eine Testdatei im Stammverzeichnis Verzeichnis test.php, geben Sie den folgenden Code ein:
<?php require_once __DIR__ . '/vendor/fzaninotto/faker/src/autoload.php'; $faker = Faker\Factory::create(); echo $faker->name, "\n"; echo $faker->address, "\n"; echo $faker->text;
Führen Sie das Skript im CLI-Modus aus, php test.php
sehen Sie sich die Ausgabeergebnisse an. Die Ergebnisse von faker werden zufällig generiert:
Prof. Kailyn Barton 9230 Herzog Groves Suite 005 Gusikowskihaven, CO 60533-4716 Nesciunt voluptas debitis iusto consectetur possimus mollitia in quam. Vel non rem temporibus illo numquam est. Sit fugit sed fugit id eligendi eaque sunt possimus.
Fakers Eigennamen
faker definiert einige Eigennamen, um uns zu helfen, seine Designideen zu verstehen seinen Quellcode verstehen.
Zusätzlich zu den oben genannten drei Attributen bietet faker auch eine große Anzahl von Simulationsdaten zur Auswahl. Jedes Generatorattribut (wie oben verwendete name
, address
und lorem
) wird als Formatierer (Formatierer) bezeichnet.
Es gibt viele Arten von Daten, die wir ausfüllen müssen, wie zum Beispiel
Grundlegende Zufallsdaten: ganze Zahlen, Gleitkommazahlen, Buchstaben
Zufällige Zeicheninformationen: Name, Nachname, Vorname usw.
Zufällige Nummer: Mobiltelefonnummer, Telefonnummer
Faker definiert jede Kategorie als Anbieter. Sehen Sie sich data-seeder/vendor/fzaninotto/faker/src/Faker/Provider an, um die Klassendateien verschiedener Anbieter sowie die Dateien von Sprachpaketen anzuzeigen.
Quellcode-Analyse
Das Faker-Erweiterungspaket ist klein, enthält aber alles Wesentliche und ist sehr wertvoll zum Lernen.
Generierung von Faker-Objekten
Sehen Sie sich die Factory-Methode des Faker-Generators an:
const DEFAULT_LOCALE = 'en_US'; protected static $defaultProviders = array('Address', 'Barcode', 'Biased', 'Color', 'Company', 'DateTime', 'File', 'HtmlLorem', 'Image', 'Internet', 'Lorem', 'Miscellaneous', 'Payment', 'Person', 'PhoneNumber', 'Text', 'UserAgent', 'Uuid'); public static function create($locale = self::DEFAULT_LOCALE) { $generator = new Generator(); foreach (static::$defaultProviders as $provider) { $providerClassName = self::getProviderClassname($provider, $locale); $generator->addProvider(new $providerClassName($generator)); } return $generator; }
Parameterlocale
ist das Sprachpaket, der Standardwert ist en_US
Englisch der Vereinigten Staaten. Alle unterstützten Sprachpakete können im Verzeichnis data-seeder/vendor/fzaninotto/faker/src/Faker/Provider
eingesehen werden.
Die Standardanbieter (Anbieter wurde oben erwähnt) finden Sie in der Eins-zu-eins-Korrespondenz im oben genannten Anbieterverzeichnis. Durchlaufen Sie das Array und fügen Sie den entsprechenden Anbieter zum Generator $generator
hinzu.
protected static function getProviderClassname($provider, $locale = '') { if ($providerClass = self::findProviderClassname($provider, $locale)) { return $providerClass; } // fallback to default locale if ($providerClass = self::findProviderClassname($provider, static::DEFAULT_LOCALE)) { return $providerClass; } // fallback to no locale if ($providerClass = self::findProviderClassname($provider)) { return $providerClass; } throw new \InvalidArgumentException(sprintf('Unable to find provider "%s" with locale "%s"', $provider, $locale)); }
getProviderClassname sucht nach der Provider-Klasse gemäß der folgenden Logik. Wenn sie in der aktuellen Datei nicht vorhanden ist, wird nach der Datei der nächsten Ebene gesucht Wenn Sie es finden, wird eine Ausnahme ausgelöst:
Der vom Benutzer übergebene Sprachpaketordner -> Der Standard-Sprachpaketordner en_US -> 🎜>
public function addProvider($provider) { array_unshift($this->providers, $provider); }
$generator
Bei Verwendung des von Faker zurückgegebenen Objekts gibt es zwei Möglichkeiten: Aufrufen von Attributen und Aufrufen von Methoden. Diese Aufrufe lösen die magische Methode aus:
public function format($formatter, $arguments = array()) { return call_user_func_array($this->getFormatter($formatter), $arguments); } public function __get($attribute) { return $this->format($attribute); } public function __call($method, $attributes) { return $this->format($method, $attributes); }
Verfahren.
getFormatter__call
public function getFormatter($formatter) { if (isset($this->formatters[$formatter])) { return $this->formatters[$formatter]; } foreach ($this->providers as $provider) { if (method_exists($provider, $formatter)) { $this->formatters[$formatter] = array($provider, $formatter); return $this->formatters[$formatter]; } } throw new \InvalidArgumentException(sprintf('Unknown formatter "%s"', $formatter)); }
farmat
speichert die Informationen zum Formatierer, der im Faker-Eigennamen erwähnt wird. Um das Verständnis zu erleichtern, finden Sie hier ein Beispiel für die Verwendung eines zufälligen Elements in einem Array, um diese abstrakten Konzepte zu veranschaulichen. $faker->randomElement(['a', 'b', 'c']);
gefunden wird, ist der zu verwendende Anbieter $this->formatters
und der Formatierer ist die Methode
Base.php
Dann müssen Sie die entsprechende Beziehung von randomeElement() in Base speichern, um zu vermeiden, dass beim nächsten Mal alle Anbieter erneut durchlaufen werden. Dies ist der Grund, warum Base.php
implementiert wird. randomElement()
auf und geben Sie das Ergebnis zurück. $this->formatters
Objektgenerierungs- und Aufrufprozess abgeschlossen. call_user_func_array
faker
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die virtuelle Datenfüllung durch Faker (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!