Poppy Faker 是基於 fzaninotto/Faker 的中文版本, 因為之前的版本包含語言過多, 所以將這個資料進行拆離, 並加入中國特色的部分驗證規則.
Faker 可以幫助你建立資料庫資料, XML 報表, 填寫假地址, 或者匿名的資料.
安裝
composer require poppy/faker
基本使用
在專案根目錄下執行
$ php -S 0.0.0.0:8000 -t tests/
PHP 7.2.33 Development Server started at Thu Nov 5 15:21:19 2020
Listening on http://0.0.0.0:8000
Document root is /path/of/poppy/faker/tests
Press Ctrl-C to quit.
然後再瀏覽器訪問即可獲取詳細的示例資料
http://127.0.0.1:8000/ # 返回 帶有樣式的示例資料
http://127.0.0.1:8000/?md # 返回 Markdown 格式資料
基於包的調整專案
- 刪除 ORM
- 刪除除 [en_US, zh_CN, zh_TW] , 之外的語言
- 增加 zhCN 身份證號生成
建立假資料
使用 \Poppy\Faker\Factory::create('zh_CN')
來建立和初始化生成器, 這裡保留之前英文版生成資料的規則
<?php
// use the factory to create a \Poppy\Faker\Generator instance
$faker = \Poppy\Faker\Factory::create('zh_CN');
// generate data by accessing properties
echo $faker->name;
// 'Lucy Cechtelar';
echo $faker->address;
// "426 Jordy Lodge
// Cartwrightshire, SC 88120-6700"
echo $faker->text;
// Dolores sit 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.
Base
// 生成隨機整數 0 - 9
$faker->randomDigit; // 8
// 生成唯一整數
$faker->unique()->randomDigit; // 1
// 生成隨機不為空的整數
$faker->randomDigitNotNull; // 8
// 生成隨機數字
$faker->randomNumber($nbDigits = 5, $strict = false); // 6783
// 生成隨機浮點數
$faker->randomFloat($nbMaxDecimals = null, $min = 0, $max = null); // 13399.11050914
// 在指定範圍內生成隨機數
$faker->numberBetween($min = 1000, $max = 9000); // 3953
// 生成隨機字元
$faker->randomLetter; // t
// 在給定的陣列中,隨機生成給定的個數字符
$faker->randomElements($array = ['a', 'b', 'c'], $count = 2); // Array
(
[0] => a
[1] => c
)
// 在給定的陣列中,生成單個隨機字元
$faker->randomElement($array = ['a', 'b', 'c']); // a
// 打亂給定的字串
$faker->shuffle('hello, world'); // elrlh dowol,
// 打亂給定的陣列
$faker->shuffle([1, 2, 3]); // Array
(
[0] => 3
[1] => 1
[2] => 2
)
// 給佔位符生成隨機整數 (數字為#)
$faker->numerify('Hello ###'); // Hello 713
// 給佔位符生成隨機字串 (字串為?)
$faker->lexify('Hello ???'); // Hello jjg
// 給佔位符生成混合的隨機字串
$faker->bothify('Hello ##??'); // Hello 79ks
// 給佔位符生成隨機的字元(字母、數字、符號)
$faker->asciify('Hello ***'); // Hello B.7
// 根據正則規則生成隨機字元
$faker->regexify('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'); // _XD%HRE@VUREXV2D.OLYE
Lorem
// 生成隨機個數的字串
$faker->word; // 議
// 隨機生成指定個數的字串
$faker->words($nb = 3, $asText = false); // Array
(
[0] => 玩
[1] => 轉
[2] => 答
)
// 隨機生成一條語句
$faker->sentence($nbWords = 6, $variableNbWords = true); // 納懷房海交知.
// 隨機生成指定條數的語句
$faker->sentences($nb = 3, $asText = false); // Array
(
[0] => 授界類表如守.
[1] => 尼痛念化人歸懂總.
[2] => 聖味送雜含貝機四.
)
// 隨機生成一個段落
$faker->paragraph($nbSentences = 3, $variableNbSentences = true); // 雄搖馬史她戴袋. 層關飛某阿喊. 鬆上助仍奧外講.
// 隨機生成指定個數段落
$faker->paragraphs($nb = 3, $asText = false); // Array
(
[0] => 充條數和制爾進知中. 果藏供創陣急遺然. 從請生反雄仍洲葉護.
[1] => 報停暗險端市. 興定北洛革. 去夜慢納腳脫. 調雪妙託脫走它相. 漢典兒九刻.
[2] => 真語強究授童劇銀. 型濟著武熱吧克藏. 母英封蒙.
)
// 隨機生成一個文字
$faker->text($maxNbChars = 200); // 熟稱喝救告吸確. 館推布信久識. 民又事黃要之怎劃. 奇蘭現介先對戲. 罪總乎論雪兵黃島. 禁安議做親差學極.
Person
// 職位
$faker->title; // 太太
// 稱謂
$faker->titleMale; // 教授
// 女性稱謂
$faker->titleFemale; // 律師
// 姓名
$faker->name // 蕭文君
// 名字
$faker->firstName // 志明
// 男性名字
$faker->firstNameMale // 華
// 女性名字
$faker->firstNameFemale // 楠
// 姓
$faker->lastName // 馬
// 隨機生成一個可以校驗的身份證號
$faker->idNumber // 640181200809108307
Address
// 隨機生成省份/州
$faker->state; // 河南省
// 隨機城市省份/州縮寫
$faker->stateAbbr; // 蒙
// 隨機生成城市字尾
$faker->citySuffix; // Ville
// 隨機生成街道字尾
$faker->streetSuffix; // Street
// 隨機生成建築編號
$faker->buildingNumber; // 11
// 隨機生成城市
$faker->city; // 拉薩
// 隨機生成街道名
$faker->streetName; // 暢 Street
// 隨機生成街道地址
$faker->streetAddress; // 71 孟 Street
// 隨機生成郵編
$faker->postcode; // 217000
// 隨機生成地址
$faker->address; // 瀋陽興山區
// 隨機生成國家
$faker->country; // 聖馬利諾
// 隨機生成緯度
$faker->latitude($min = -90, $max = 90); // 75.15737
// 隨機生成經度
$faker->longitude($min = -180, $max = 180); // -81.385411
Phone Number
// 生成隨機電話號碼
$faker->phoneNumber; // 13273265620
// 隨機生成e164電話
$faker->e164PhoneNumber; // +3411056457052
Company
// 隨機生成公司
$faker->company; // 巨奧資訊有限公司
// 隨機生成公司字尾
$faker->companySuffix; // 傳媒有限公司
// 隨機生成職務
$faker->jobTitle; // 必
Text
// 隨機生成一段文字
$faker->realText($maxNbChars = 200, $indexSize = 2); // CHAPTER IV. The Rabbit Sends in a deep, hollow tone: 'sit down, both of you, and don't speak a word till I've finished.' So they had to pinch it to make out exactly what they WILL do next! If they.
Datetime
// 隨機生成時間戳
$faker->unixTime($max = 'now'); // 84146285
// 隨機生成時間
$faker->dateTime($max = 'now', $timezone = date_default_timezone_get()); // DateTime Object
(
[date] => 1981-09-02 21:14:42.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// dateTimeAd
$faker->dateTimeAD; // DateTime Object
(
[date] => 0308-03-16 05:39:50.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成ios8601時間
$faker->iso8601($max = 'now'); // 1991-03-04T20:59:46+0800
// 根據格式隨機生成日期
$faker->date($format = 'Y-m-d', $max = 'now'); // 1983-03-01
// 根據格式隨機生成時間
$faker->time($format = 'H:i:s', $max = 'now'); // 22:34:27
// 生成指定範圍的時間
$faker->dateTimeBetween($startDate = '-30 years', $endDate = 'now'); // DateTime Object
(
[date] => 2006-07-12 13:47:24.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成一個指定間隔的時間
$faker->dateTimeInInterval($startDate = '-30 years', $interval = '+ 5 days', $timezone = date_default_timezone_get()); // DateTime Object
(
[date] => 1990-11-08 17:13:04.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成當前世紀的時間
$faker->dateTimeThisCentury($max = 'now', $timezone = date_default_timezone_get()); // DateTime Object
(
[date] => 1991-02-19 01:39:03.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成當前十年的時間
$faker->dateTimeThisDecade($max = 'now', $timezone = date_default_timezone_get()); // DateTime Object
(
[date] => 2013-12-25 22:46:17.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成當前年的時間
$faker->dateTimeThisYear($max = 'now', $timezone = date_default_timezone_get()); // DateTime Object
(
[date] => 2020-05-18 23:34:51.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成當前月的時間
$faker->dateTimeThisMonth($max = 'now', $timezone = date_default_timezone_get()); // DateTime Object
(
[date] => 2020-10-27 04:22:07.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成 am/pm
$faker->amPm($max = 'now'); // 下午
// 隨機生成月份的某一天
$faker->dayOfMonth($max = 'now'); // 30
// 隨機生成星期
$faker->dayOfWeek($max = 'now'); // 星期日
// 隨機生成月份
$faker->month($max = 'now'); // 03
// 隨機生成月份的名稱
$faker->monthName($max = 'now'); // 十一月
// 隨機生成年份
$faker->year($max = 'now'); // 2004
// 隨機生成世紀
$faker->century; // XV
// 隨機生成時區
$faker->timezone; // Asia/Hebron
Internet
// 隨機生成郵箱地址
$faker->email; // xiao_er@hotmail.com
// 隨機生成安全的郵箱地址
$faker->safeEmail; // an82@example.net
// 隨機生成免費的郵箱地址
$faker->freeEmail; // alian@126.com
// 隨機生成公司郵箱地址
$faker->companyEmail; // tong_mai@qu.com
// 隨機生成免費郵箱域名
$faker->freeEmailDomain; // 126.com
// 隨機生成安全郵箱域名
$faker->safeEmailDomain; // example.org
// 隨機生成使用者名稱
$faker->userName; // ting_du
// 隨機生成密碼
$faker->password; // h1RZMuV54|n=Q$L-in]
// 隨機生成域名
$faker->domainName; // yan.org
// 隨機生成域
$faker->domainWord; // bai
// todo Tld
$faker->tld; // biz
// 隨機生成url地址
$faker->url; // https://zhou.info/方-農-死-規.html
// 隨機生成塊
$faker->slug; // 的-城-心-古-終-參-濟-文
// 隨機生成ipv4地址
$faker->ipv4; // 243.54.13.136
// 隨機生成本地ipv4地址
$faker->localIpv4; // 10.5.211.82
// 隨機生成ipv6地址
$faker->ipv6; // 7ca1:9d43:46d5:589f:1b2b:e372:5e17:1a91
// 隨機生成mac地址
$faker->macAddress; // 14:38:9C:55:CD:C5
UserAgent
// 使用者代理
$faker->userAgent; // Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20190828 Firefox/36.0
// 谷歌
$faker->chrome; // Mozilla/5.0 (Windows 98; Win 9x 4.90) AppleWebKit/5321 (KHTML, like Gecko) Chrome/37.0.885.0 Mobile Safari/5321
// 火狐
$faker->firefox; // Mozilla/5.0 (Windows NT 5.1; en-US; rv:1.9.2.20) Gecko/20110217 Firefox/36.0
// Safari
$faker->safari; // Mozilla/5.0 (iPad; CPU OS 7_0_1 like Mac OS X; en-US) AppleWebKit/531.7.5 (KHTML, like Gecko) Version/3.0.5 Mobile/8B111 Safari/6531.7.5
// 歐朋
$faker->opera; // Opera/8.83 (Windows NT 5.01; en-US) Presto/2.12.189 Version/12.00
// ie
$faker->internetExplorer; // Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/3.1)
Payment
// 隨機生成信用卡型別
$faker->creditCardType; // MasterCard
// 隨機生成信用卡號
$faker->creditCardNumber; // 343611837373950
// 隨機生成信用卡有效日期
$faker->creditCardExpirationDate; // DateTime Object
(
[date] => 2022-11-09 16:46:16.000000
[timezone_type] => 3
[timezone] => Asia/Shanghai
)
// 隨機生成信用卡有效日期
$faker->creditCardExpirationDateString; // 11/20
// 隨機生成信用卡明細
$faker->creditCardDetails; // Array
(
[type] => Visa
[number] => 4556837981031508
[name] => 鄢子安
[expirationDate] => 06/21
)
// 隨機生成國際銀行賬號
$faker->iban($countryCode = null); // GR8189640507T689358O3SK6K5B
// todo 瑞士銀行賬號
$faker->swiftBicNumber; // DWDFOKO4S3Y
Color
// 隨機生成16進位制顏色
$faker->hexColor; // #7675e0
// 隨機生成rgb格式的顏色
$faker->rgbColor; // 222,237,164
// 隨機生成陣列格式的rgb顏色
$faker->rgbColorAsArray; // Array
(
[0] => 118
[1] => 160
[2] => 37
)
// 隨機生成css格式的rgb顏色
$faker->rgbCssColor; // rgb(133,60,133)
// 隨機生成顏色名稱
$faker->safeColorName; // 黑色
// 顏色名稱
$faker->colorName; // 暗蘭紫
File
// 隨機生成副檔名
$faker->fileExtension; // 3dml
// 隨機生成mime型別
$faker->mimeType; // application/vnd.pvi.ptid1
Image
// 隨機生成圖片地址
$faker->phUrl($width = 640, $height = 480); // https://fakeimg.pl/640x480/282828/eae0d0?
// 隨機生成頭像地址
$faker->avatarUrl(300, 'girl'); // https://pravatar.cc/300?img=38
// 返回 Svg Url 地址
$faker->svgUrl(100, 100) // https://pravatar.cc/bottts/19857.svg?width=100&height=100
UUID
// 隨機生成一個唯一字串
$faker->uuid // 47b5b18c-6fee-3188-9d88-ecb7e406da4b
Calculator
// 隨機生成13位ean碼
$faker->ean13; // 0120309434624
// 隨機生成8位ean碼
$faker->ean8; // 44845025
// 隨機生成13位isbn碼
$faker->isbn13; // 9798976904019
// 隨機生成10位isbn碼
$faker->isbn10; // 7300501559
Miscellaneous
// 隨機生成bool值 false
$faker->boolean; // 1
// 平衡的生成bool值
$faker->boolean($chanceOfGettingTrue = 50); //
// Md5
$faker->md5; // 02ab746139e35599e12a2a0fc21ece2c
// Sha1
$faker->sha1; // 81308895610bbe530dec6269e4cce55044dda0dd
// Sha256
$faker->sha256; // 3cc0882a1c3d7f68298a93c32ce2f094118ad72dbe00ef35e96f4613aaecef2f
// Locale
$faker->locale; // ja_JP
// 隨機生成國家編碼
$faker->countryCode; // IS
// 隨機生成語言編碼
$faker->languageCode; // mn
// 隨機生成貨幣程式碼
$faker->currencyCode; // KZT
// Emoji
$faker->emoji; // ?
Biased
// 在10到20之間得到一個隨機數,有更多的機率接近20
$faker->biasedNumberBetween($min = 10, $max = 20, $function = 'sqrt'); // 17
Html
// 隨機生成一個不超過 $maxDepth層的html, 任何級別上都不超過$maxWidth個元素
$faker->randomHtml($maxDepth = 2, $maxWidth = 3); // <html><head><title>言节显登.</title></head><body><form action="example.com" method="POST"><label for="username">则</label><input type="text" id="username"><label for="password">非</label><input type="password" id="password"></form><i>水线名诉呀孤起.</i></body></html>
License
Faker is released under the MIT License. See the bundled LICENSE file for details.
本作品採用《CC 協議》,轉載必須註明作者和本文連結