PHPackages                             yeosz/dtool - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. yeosz/dtool

ActiveLibrary

yeosz/dtool
===========

填充数据,数据供应器

1.4.3(5y ago)307726MITPHPPHP ^5.6 || ^7.0

Since Jun 13Pushed 5y ago1 watchersCompare

[ Source](https://github.com/yeosz/dtool)[ Packagist](https://packagist.org/packages/yeosz/dtool)[ RSS](/packages/yeosz-dtool/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (14)Used By (0)

dtool
=====

[](#dtool)

安装
--

[](#安装)

使用 Composer 安装:

```
composer require "yeosz/dtool"

```

使用
--

[](#使用)

### Provider 数据供给器

[](#provider-数据供给器)

```
$provider = new \Yeosz\Dtool\Provider();

$data = [
    'string' => $provider->getString(10),
    'mb_string' => $provider->getMbString(10),
    'city' => $provider->city,
    'address' => $provider->address,
    'uuid' => $provider->uuid,
    'id_card' => $provider->id_card,
    'image_url' => $provider->image_url,
    'bitmap_url' => $provider->bitmap_url,
    'name' => $provider->name,
    'first_name' => $provider->first_name,
    'last_name' => $provider->last_name,
    'phone' => $provider->phone,
    'mobile' => $provider->mobile,
    'email' => $provider->email,
    'qq' => $provider->qq,
    'postcode' => $provider->postcode,
    'company_name' => $provider->company_name,
    'ean8' => $provider->ean8,
    'ean13' => $provider->ean13,
    'timestamp' => $provider->timestamp,
    'year' => $provider->year,
    'date' => $provider->date,
    'time' => $provider->time,
    'integer' => $provider->integer,
    'random' => $provider->randomValue([1, 2, 3]),
    'payment' => $provider->payment,
    'bank' => $provider->bank,
    'color_name' => $provider->color_name,
    'color_hex' => $provider->color_hex,
    'color_rgb' => $provider->color_rgb,
    'version' => $provider->version,
    'between' => $provider->between(11, 99, 1000),
];

print_r($data);

// 数字供应器 numberProvider
$provider->numberProvider->randomMediumint();
// 时间供应器 datetimeProvider
$provider->datetimeProvider->time();

// 自增长
$provider->addIncrement('sort', 1);
var_dump($provider->sort);
var_dump($provider->sort);
var_dump($provider->sort);

// 自定义供应器
$provider->addProvider('my_time', function(){
    return time();
});
var_dump($provider->my_time);
```

### DB PDO封装

[](#db-pdo封装)

```
$db = new Yeosz\Dtool\DB('localhost;port=33060', 'homestead', 'homestead', 'secret');

$sql = "CREATE TABLE `dtool_test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `username` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名',
  `name` varchar(20) NOT NULL DEFAULT '' COMMENT '真实姓名',
  `sex` enum('2','1','0') NOT NULL COMMENT '性别:1男2女0未知',
  `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'user id',
  `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '价格',
  `address` varchar(60) NOT NULL DEFAULT '' COMMENT '地址',
  `remarks` varchar(128) NOT NULL DEFAULT '' COMMENT '备注',
  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_username` (`username`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;";
$db->query($sql);

$rows = $db->query("select * from dtool_test where " . $db->buildInCondition('id', [1,2,3,4], true) . " order by id desc");
print_r($rows);

$row = $db->row("select id,name from dtool_test where id=:id", ['id'=>1]);
print_r($row);

$column = $db->column("select name from dtool_test");
print_r($column);

$cell = $db->cell("select name from dtool_test where id=?", [1]);
print_r($cell);
```

### MysqlTool MySQL工具

[](#mysqltool-mysql工具)

```
$db = new Yeosz\Dtool\DB('localhost:33060', 'homestead', 'homestead', 'secret');

$tool = new Yeosz\Dtool\MysqlTool($db, 'homestead');
// 生成文档
file_put_contents('./document.html', $tool->getDocument());

// 生成表数据供应器
$tool->buildTableProvider('./tp/', 'TableProvider');
```

[![image](https://raw.githubusercontent.com/yeosz/dtool/master/examples/doc.png)](https://raw.githubusercontent.com/yeosz/dtool/master/examples/doc.png)

### TableProvider 表数据供给器

[](#tableprovider-表数据供给器)

- [DtoolTest](https://github.com/yeosz/dtool/blob/master/examples/tp/DtoolTest.php)

```
// omposer.json修改autoload部分,增加命名空间
$table = new \TableProvider\DtoolTest();
$data = $table->generate(); // 生成数据,但不插入数据库
$table->db->insert('dtool_test', $data);
$table->create(2); // 生成数据,并插入数据库
// generate和create都可以传入一个闭包参数,对数据进行修改
$data = $table->generate(function ($current){
    $current['user_id'] = mt_rand(111,999);
    return $current;
});

// 表也可以针对某列自定义数据供应器 方法名以dataProvider开头
class DtoolTest  extends Base
{
    public $table = 'dtool_test';
    public $columns = [
        'username' => ["getString",16],
        'name' => ["getString",16],
        'sex' => ["randomValue",["2","1","0"]],
        'user_id' => ["custom_user_id"],
        'price' => ["randomFloat",8,2],
        'address' => ["getString",16],
        'remarks' => ["getString",16],
        'created_at' => ["timestamp"],
    ];
    public $pk = 'id';

    public function dataProviderCustomUserId()
    {
        return mt_rand(111,999);
    }
}
```

### MysqlCompare 结构同步

[](#mysqlcompare-结构同步)

```
$db1 = new Yeosz\Dtool\DB('localhost', 'demo1', 'homestead', 'secret');
$db2 = new Yeosz\Dtool\DB('localhost', 'demo2', 'homestead', 'secret');

$diff = new \Yeosz\Dtool\MysqlCompare($db2, $db1);
$diff->showSql();
```

### Postman

[](#postman)

- [postman.js](https://github.com/yeosz/dtool/blob/master/src/resources/postman.js)

接口调试时生成随机数据，方便测试（建议先压缩）

[![image](https://raw.githubusercontent.com/yeosz/dtool/master/examples/postman.png)](https://raw.githubusercontent.com/yeosz/dtool/master/examples/postman.png)

参考
--

[](#参考)

- [详细参考资料](https://github.com/yeosz/dtool/tree/master/src/resources)

License
=======

[](#license)

MIT

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~96 days

Total

13

Last Release

2091d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5c2bad31143d5373bb0b68549443670fb70fafd7e56f44733fc82751dddcf263?d=identicon)[yeosz](/maintainers/yeosz)

---

Top Contributors

[![yeosz](https://avatars.githubusercontent.com/u/2985405?v=4)](https://github.com/yeosz "yeosz (39 commits)")

---

Tags

data-providerdatabase-designfakermysqlpdophppostman

### Embed Badge

![Health badge](/badges/yeosz-dtool/health.svg)

```
[![Health](https://phpackages.com/badges/yeosz-dtool/health.svg)](https://phpackages.com/packages/yeosz-dtool)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
