PHPackages                             linzening/devtools - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. linzening/devtools

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

linzening/devtools
==================

this is a php devepment tools. like a composer.

v1.2.1(2y ago)0138Apache-2.0PHPPHP &gt;=7.0.5

Since Apr 17Pushed 2y ago1 watchersCompare

[ Source](https://github.com/linzening/devtools)[ Packagist](https://packagist.org/packages/linzening/devtools)[ Docs](https://packagist.org/packages/linzening/devtools)[ RSS](/packages/linzening-devtools/feed)WikiDiscussions master Synced today

READMEChangelog (1)DependenciesVersions (26)Used By (0)

#### PHP开发工具集 version 1.2.0

[](#php开发工具集-version-120)

> 请看使用方法

```
composer require linzening/devtools
git@github.com:linzening/devtools.git

```

- Request类
- Spread类
- Lock进程锁
- 数据库结构
- 获取复杂的IP地址

```
use linzening\devtools\CacheLock; //Lock进程锁

$lock = new CacheLock('id_5');

$lock->lock(); //加锁
$lock->unlock(); //解锁
```

#### composer使用方法

[](#composer使用方法)

- git tag v1.2.0 #新建tag
- git push --tag #推送tag

> composer地址：

Excel表格使用说明
-----------

[](#excel表格使用说明)

参数名称必选类型说明fileName否39文件名称sheetTitle否文字表格大标题sheetName否文字表格名称xlsCell否数组字典expTableData是数组表格数据H否数组或数字表格宽度local否bool导出到服务器cvs否bool是否导出为cvs### 多个表格导出

[](#多个表格导出)

```
$fileName = "某某项目数据合并导出";
$Excel['fileName'] = $fileName.date('Y年m月d日-His',time());//文件名称
//$Excel['cellName'] = 9; //可省略
$Excel['H'] = [8,12,18,12,18,18,36,12,14];//如果是数组，即为每一列的宽度
$Excel['H'] = 2; //如果是数字，则为增加的宽度

$Excel['sheetTitle'] = $fileName.'个人详细';//表格大标题 自定义
$Excel['sheetName']='个人详细';//表格名称 自定义
$Excel['xlsCell']=[
    ['i','序号'],
    ['grade','年级'],
    ['classfull','班级'],
    ['realname','姓名'],
    ['studentid','学号'],
    ['datetime','時間'],
    ['content','內容'],
    ['setcount','次數'],
    ['admin_name','管理員'],
];
$Excel['expTableData'] = model('core')->every_user($part,$year); //二维数组，对应`xlsCell`参数

$Excels[] = $Excel;

$parts = array_group_by($list,'partid');

$list0 = [];
foreach ($parts as $key => $value) {
    $item0['partid'] = $value[0]['partid'];
    $item0['partname'] = $value[0]['name'];
    $item0['items'] = [];
    foreach ($value as $key1 => $value1) {
        $item0['items'][] = [
            'major_id' => $value1['major_id'],
            'major_name' => $value1['major_name'],
            'short' => $value1['short'],
        ];
    }
    $list0[] = $item0;
}

$fileName = "某某项目数据不合并导出2";
$Excel['fileName'] = $fileName.date('Y年m月d日-His',time());//or $xlsTitle
$Excel['H'] = [22,20,30,40,30];//横向水平宽度

$Excel['sheetTitle'] = $fileName;//大标题，自定义
$Excel['sheetName'] = '扣除';//表格名称
$Excel['xlsCell']=[
    ['partid','学院ID'],
    ['partname','学院名称'],
    ['major_id','专业ID'],
    ['major_name','专业名称'],
    ['short','专业简称']
];
$Excel['expTableData'] = $list0;
$Excels[] = $Excel;

if($Excels){
    // 导出复杂的Excel
    \linzening\devtools\Spread::excelPuts($Excels);
}
exit('暂无数据导出');

// 导出精简的Excel
\linzening\devtools\Spread::excelPuts($list);
// 导出CVS文件
\linzening\devtools\Spread::cvsPuts($list);
```

- 导出格式预览

[![合并导出](https://camo.githubusercontent.com/f1269f0b7923297081c66b7b61e247b6c33c99a82982dee4f8c8bbc1bcb5df71/68747470733a2f2f63646e2e666538302e636e2f75706c6f6164732f323032342f3437323334345f657863656c2d7075742e706e67)](https://camo.githubusercontent.com/f1269f0b7923297081c66b7b61e247b6c33c99a82982dee4f8c8bbc1bcb5df71/68747470733a2f2f63646e2e666538302e636e2f75706c6f6164732f323032342f3437323334345f657863656c2d7075742e706e67)

数据库结构导出
-------

[](#数据库结构导出)

```
echo \linzening\devtools\Structure6::all_tables('system','markdown','','',2);
```

模板使用说明
------

[](#模板使用说明)

```
// 输出模板
public function html($page='deny'){
    // $page in deny,deving,holiday,notice,starting,temporary,upgrade-browser
    return \linzening\devtools\Template::template($page);
}
```

获取复杂的IP地址
---------

[](#获取复杂的ip地址)

```
$r = new \linzening\devtools\Request();
$ip = $r->get_client_ip(0,true,'HTTP_X_FORWARDED_FOR');
```

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

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

Recently: every ~276 days

Total

25

Last Release

740d ago

PHP version history (2 changes)v1.1.0PHP &gt;=7.1.0

v1.1.5PHP &gt;=7.0.5

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/29197457?v=4)[linzening](/maintainers/linzening)[@linzening](https://github.com/linzening)

---

Top Contributors

[![linzening](https://avatars.githubusercontent.com/u/29197457?v=4)](https://github.com/linzening "linzening (55 commits)")

### Embed Badge

![Health badge](/badges/linzening-devtools/health.svg)

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

PHPackages © 2026

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