前言

在撰寫程式碼時,我們常常需要弄一些測試用的假資料來填充資料庫或是版面,faker 就是一個處理這件事的好用工具。

使用方式

安裝

請用 composer

composer require fzaninotto/faker

基本用法

require_once 'vendor/autoload.php';
$faker = Faker\Factory::create();

echo $faker->name;
echo $faker->address;
echo $faker->text;

配合地區語系(Localization)

require_once 'vendor/autoload.php';
$faker = Faker\Factory::create('zh_TW');   // 設定語系為繁體中文

echo $faker->name();       // 中文人名
echo $faker->lastName();   // 中文 姓
echo $faker->firstName();  // 中文 名
echo $faker->address();    // 中文地址
echo $faker->realText(500);   // 500 個字的中文文章段落

數字類型的測試資料

require_once 'vendor/autoload.php';
$faker = Faker\Factory::create();

echo $faker->randomDigit;             // 0 ~ 9 間的隨機數字
echo $faker->randomDigitNot(4);       // 0 ~ 9 間的隨機數字,除了 4 之外
echo $faker->randomNumber($nbDigits = NULL, $strict = false); // 隨機整數
echo $faker->randomFloat($nbMaxDecimals = NULL, $min = 0, $max = NULL); // 隨機浮點數
echo $faker->numberBetween($min = 1, $max = 100); // 1 到 100 間的隨機整數

Lorem Ipsum 類型的測試資料

word: 單字。

sentence: 句子,預設有 6 個單字。

paragraph: 段落,預設有 3 個句子。

$faker = Faker\Factory::create();

echo $faker->word;                                             // 單字
var_dump($faker->words($nb = 3, $asText = false));             // 回傳含有 3 個 word 的陣列
echo $faker->sentence($nbWords = 6, $variableNbWords = true);  // 句子
var_dump($faker->sentences($nb = 3, $asText = false));         // 回傳含有 3 個 sentence 的陣列
echo $faker->paragraph($nbSentences = 3, $variableNbSentences = true); // 段落
var_dump($faker->paragraphs($nb = 3, $asText = false));        // 回傳含有 3 個 paragraph 的陣列
echo $faker->text($maxNbChars = 200);                          // 200 字以上的段落  

網路相關的測試資料

require_once 'vendor/autoload.php';
$faker = Faker\Factory::create();   

echo $faker->email;                   // 'neoma30@wisozk.com'
echo $faker->safeEmail;               // 'langworth.nyasia@example.com'
echo $faker->userName;                // 'savanah16'
echo $faker->password;                // 'E({8'@,6"'
echo $faker->domainName;              // 'oreilly.info'
echo $faker->url;                     // 'https://russel.com/omnis-exercitationem-dolore-debitis-doloremque.html'
echo $faker->slug;                    // 'dolor-fuga-doloribus-voluptas-est-a-fugiat-nulla'
echo $faker->ipv4;                    // '6.245.190.94'
echo $faker->localIpv4;               // '192.168.3.175'
echo $faker->ipv6;                    // '9938:ed5b:bccf:53f1:9f8c:2d3d:dd2e:d53f'
echo $faker->macAddress;              // '76:09:4D:08:5C:A9'

時間相關的測試資料

require_once 'vendor/autoload.php';
$faker = Faker\Factory::create();   

echo $faker->unixTime($max = 'now');                // 1508798019
var_dump($faker->dateTime($max = 'now', $timezone = null)); // DateTime('1989-07-21 17:22:12.000000', 'UTC')
echo $faker->date($format = 'Y-m-d', $max = 'now'); // '2004-10-09'
echo $faker->time($format = 'H:i:s', $max = 'now'); // '11:04:48'
var_dump($faker->dateTimeThisYear($max = 'now', $timezone = null));  // DateTime('2020-02-03 05:25:23.000000', 'UTC')
var_dump($faker->dateTimeThisMonth($max = 'now', $timezone = null)); // DateTime('2020-09-18 08:35:14.000000', 'UTC')
echo $faker->amPm($max = 'now');                    // 'pm' or '上午' - 依語系
echo $faker->dayOfMonth($max = 'now');              // '15'
echo $faker->dayOfWeek($max = 'now');               // 'Friday' or '星期六' - 依語系
echo $faker->month($max = 'now');                   // '04'
echo $faker->monthName($max = 'now');               // 'July' or '七月' - 依語系
echo $faker->year($max = 'now');                    // '2017'
echo $faker->timezone;                              // 'Europe/Kaliningrad'

還有很多奇奇怪怪的資料型態,等有用到再來補充。

參考資料

fzaninotto/Faker

Last modified: 2020-10-11

Author

Comments

Write a Reply or Comment

Your email address will not be published.