PHPackages                             workbunny/storage - 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. [Database &amp; ORM](/categories/database)
4. /
5. workbunny/storage

ActiveLibrary[Database &amp; ORM](/categories/database)

workbunny/storage
=================

A lightweight storage for PHP based on sqlite3.

1.0.0(3y ago)8152MITPHPPHP &gt;=7.4

Since Jun 16Pushed 3y agoCompare

[ Source](https://github.com/workbunny/storage)[ Packagist](https://packagist.org/packages/workbunny/storage)[ Docs](https://github.com/workbuunny)[ RSS](/packages/workbunny-storage/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (2)Versions (4)Used By (0)

[![workbunny](https://camo.githubusercontent.com/e2b1164338390ab45783434659e3e419e0c3b50fbe140c697ba1f82f59015ad6/68747470733a2f2f6368617a366368657a2e636e2f696d616765732f776f726b62756e6e792d6c6f676f2e706e67)](https://camo.githubusercontent.com/e2b1164338390ab45783434659e3e419e0c3b50fbe140c697ba1f82f59015ad6/68747470733a2f2f6368617a366368657a2e636e2f696d616765732f776f726b62756e6e792d6c6f676f2e706e67)

**workbunny/storage**

**🐇 A lightweight storage for PHP based on sqlite3 🐇**

 [ ![Build Status](https://github.com/workbunny/storage/actions/workflows/CI.yml/badge.svg) ](https://github.com/workbunny/storage/actions) [ ![PHP Version Require](https://camo.githubusercontent.com/a9e897178667e90bcbbec420f48f2e4b608f9f9b53fc43684385cbe7b1ac252c/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f7068702f776f726b62756e6e792f73746f72616765) ](https://github.com/workbunny/storage/blob/main/composer.json) [ ![GitHub license](https://camo.githubusercontent.com/a78981ef7a1093b26ad63cb88e27b79820a1c47dd3a87b42279095f58a78e0b3/68747470733a2f2f62616467656e2e6e65742f7061636b61676973742f6c6963656e73652f776f726b62756e6e792f73746f72616765) ](https://github.com/workbunny/storage/blob/main/LICENSE)

说明
==

[](#说明)

- 创建连接

**:memory:** 内存数据库最好用作临时数据库

```
$client = new \WorkBunny\Storage\Driver([
    # 内存数据库
    'filename' => ':memory:',
    # test.db文件数据库
//    'filename' => 'test.db',

    'flags' => 'SQLITE3_OPEN_READWRITE|SQLITE3_OPEN_CREATE',
    'encryptionKey' => ''
]);
```

- 注册执行回调

每次SQL执行完后会触发执行回调

```
# 注册执行结束回调事件
\WorkBunny\Storage\Driver::onAfterExec(function (\WorkBunny\Storage\Driver $driver){
    # 打印sql及执行时长
    var_dump($driver->last(true));
});
```

- 执行

在执行大SQL语句时，预处理执行的耗时比较长

```
$client = new \WorkBunny\Storage\Driver(['filename' => ':memory:']);

# 预处理执行
$res = $client->execute('SELECT * FROM `account` WHERE `id` = 1;');
if($res instanceof SQLite3Result){
    var_dump($res->fetchArray());
    # 受影响行数
    $client->driver()->changes();
    # 最后插入的行号
    $client->driver()->lastInsertRowID();
}

# 普通执行
$res = $client->query('SELECT * FROM `account` WHERE `id` = 1;');
if($res instanceof SQLite3Result){
    var_dump($res->fetchArray());
    # 受影响行数
    $client->driver()->changes();
    # 最后插入的行号
    $client->driver()->lastInsertRowID();
}

# 仅执行
// 成功返回true 失败返回false
$res = $client->exec('SELECT * FROM `account` WHERE `id` = 1;');
```

- 建表

```
$client = new \WorkBunny\Storage\Driver(['filename' => ':memory:']);

$client->create('account', [
    'id' => [
        'INT',
        'PRIMARY KEY',
        'NOT NULL',
    ],
    'name' => [
        'VARCHAR(25)',
        'NOT NULL',
    ],
]);
```

- 建表且建立索引

过多的索引会影响数据插入

```
$client = new \WorkBunny\Storage\Driver(['filename' => ':memory:']);

$client->create('account', [
    'id' => [
        'INT',
        'PRIMARY KEY',
        'NOT NULL',
    ],
    'name' => [
        'VARCHAR(25)',
        'NOT NULL',
    ],
],[
    'CREATE INDEX `account_name` ON `account` (`name`);'
]);
```

- 删除表

```
$client = new \WorkBunny\Storage\Driver(['filename' => ':memory:']);

$client->drop('account');
```

- 插入

尽可能的避免插入多条，插入多条可能会拼接成一个大SQL，导致SQL超出范围或是预处理执行耗时过高； 在事务内循环插入是个好的替代方案；

```
$client = new \WorkBunny\Storage\Driver(['filename' => ':memory:']);

# 一次插入单条
$client->insert('account', [
    'id' => 1,
    'name' => 'test'
]);

# 一次插入多条
$client->insert('account', [
    [
        'id' => 1,
        'name' => 'test1'
    ],
    [
        'id' => 2,
        'name' => 'test2'
    ]
]);
```

- 事务

使用 **action()** 时，回调函数内返回false或者抛出异常都可中断事务并回滚

```
$client = new \WorkBunny\Storage\Driver(['filename' => ':memory:']);

# 开启
$client->begin();
# 回滚
$client->rollback();
# 提交
$client->commit();

# 事务执行
$client->action(function () {
    $client->insert('account', [
        'id' => 1,
        'name' => 'test1'
    ]);

    $client->insert('account', [
        'id' => 2,
        'name' => 'test2'
    ]);

    $client->insert('account', [
        'id' => 3,
        'name' => 'test3'
    ]);

    # 返回false或者异常抛出则回滚
});
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 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 ~60 days

Total

3

Last Release

1312d ago

Major Versions

0.0.1 → 1.0.02022-08-10

### Community

Maintainers

![](https://www.gravatar.com/avatar/d1b317277226c93c11984f73dfad75533893466b02d06611126aa1687209c6ab?d=identicon)[Chaz6Chez](/maintainers/Chaz6Chez)

---

Top Contributors

[![chaz6chez](https://avatars.githubusercontent.com/u/22535862?v=4)](https://github.com/chaz6chez "chaz6chez (15 commits)")

---

Tags

databasestoragelightweightsqlite3

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/workbunny-storage/health.svg)

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

###  Alternatives

[catfan/medoo

The lightweight PHP database framework to accelerate development

4.9k1.5M194](/packages/catfan-medoo)[ezsql/ezsql

Advance database access library. Make interacting with a database ridiculously easy. An universal interchangeable CRUD system.

86946.7k](/packages/ezsql-ezsql)[jv2222/ezsql

Advance database access library. Make interacting with a database ridiculously easy. An universal interchangeable CRUD system.

87311.3k2](/packages/jv2222-ezsql)[tommyknocker/pdo-database-class

Framework-agnostic PHP database library with unified API for MySQL, MariaDB, PostgreSQL, SQLite, MSSQL, and Oracle. Query Builder, caching, sharding, window functions, CTEs, JSON, migrations, ActiveRecord, CLI tools, AI-powered analysis. Zero external dependencies.

845.7k](/packages/tommyknocker-pdo-database-class)[ark/database

Light weight database abstraction

117.8k](/packages/ark-database)

PHPackages © 2026

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