この記事の内容は、小さなプログラムの開発において、新しいページのリンクを開く方法(コード例)に関するもので、一定の参考価値があります。困っている友人は参考にしていただければ幸いです。あなたへ。
Faker は、ストレス テスト用にデータベースにデータを入力したり、エレガントな XML ドキュメントを作成したりするために使用できるダミー データ ジェネレーターです。
インストール
プロジェクトが Composer をサポートしている場合は、次のコマンドを使用してインストールします。サポートされていない場合は、Faker の Github リポジトリからソース コードをダウンロードし、プロジェクトの拡張パック フォルダーに入れてください。
composer require fzaninotto/faker
機能をデモンストレーションするために、次のコマンドを使用して新しいプロジェクトを作成しました。
// 创建新项目文件夹 mkdir data-seeder cd data-seeder // 安装 faker 扩展 composer require fzaninotto/faker
基本的な使用法
ルートにテスト ファイルを作成します。ディレクトリ test.php に次のコードを入力します。
<?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;
CLI モードでスクリプトを実行します。php test.php
出力を表示します。 Faker の結果はランダムに生成されます:
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.
Faker の固有名詞
faker は、その設計思想を理解するのに役立ついくつかの固有名詞を定義しています。これらの概念を理解することは、次のような場合に非常に役立ちます。彼のソースコードを理解すること。
上記の 3 つの属性に加えて、faker は選択できる多数のシミュレーション データも提供します。各ジェネレーター属性 (上記で使用した name
、address
、lorem
など) は、formatter (フォーマッタ) と呼ばれます。
基本的なランダム データ: 整数、浮動小数点数、文字 # など、入力する必要があるデータの種類は数多くあります。
faker 拡張パッケージのサイズは小さいですが、必要なものがすべて揃っており、学習には非常に価値があります。
フェイカー オブジェクトの生成フェイカー ジェネレーターのファクトリ メソッドを表示します:
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; }
Parameter
locale は言語パッケージです。デフォルトは en_US
米国英語です。サポートされているすべての言語パックは、data-seeder/vendor/fzaninotto/faker/src/Faker/Provider
ディレクトリで確認できます。 デフォルトのプロバイダー (プロバイダーは上で説明しました) は、上記のプロバイダー ディレクトリに 1 対 1 対応で見つかります。配列をループし、対応するプロバイダーをジェネレーター
に追加します。 getProviderClassname
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)); }
ユーザーによって渡された言語パック フォルダー -> デフォルトの en_US 言語パック フォルダー -> プロバイダー ルート ディレクトリ
addProvider
public function addProvider($provider) { array_unshift($this->providers, $provider); }
オブジェクトのプロパティに格納されます。 faker オブジェクトの呼び出し
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); }
この 2 つのロジックは似ています。ここでは、より面倒な
__call マジック メソッドを示します。マジック メソッドは、呼び出されたメソッド名とパラメーターを に渡します。 farmat
メソッド。 getFormatter
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)); }
には、faker 固有名詞で言及されているフォーマッタに関する情報が格納されます。理解を容易にするために、これらの抽象的な概念を説明するために配列内のランダムな要素を取得する例を示します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$faker->randomElement(['a', 'b', 'c']);</pre><div class="contentsignin">ログイン後にコピー</div></div>
このメソッドが呼び出されると、マジック メソッドがトリガーされ、各プロバイダー クラスが走査されて、このメソッドが存在するかどうかが確認されます。このメソッドが
で見つかるまで、この時点で使用されるプロバイダーは Base.php
で、フォーマッタは randomElement()
メソッドです。 。 その後、次回からすべてのプロバイダーを再度通過することを避けるために、randomeElement() の対応する関係を Base に保存する必要があります。これが、
が実装されている理由です。 このメソッドは、対応するプロバイダーとフォーマッタを返した後、
を通じて呼び出され、結果を返します。 この時点で、完全な
オブジェクトの生成と呼び出しプロセスが終了しました。
以上がFaker 仮想データ充填の詳細な紹介 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。