PHPackages                             hamdon/beaver - 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. hamdon/beaver

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

hamdon/beaver
=============

some useful class, for laravel

1.0.0.x-dev(7y ago)177MITPHP

Since Apr 10Pushed 2y ago1 watchersCompare

[ Source](https://github.com/hamdon/beaver)[ Packagist](https://packagist.org/packages/hamdon/beaver)[ RSS](/packages/hamdon-beaver/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

beaver
======

[](#beaver)

some useful class for laravel

CacheLock
=========

[](#cachelock)

lock function : \\Hamdon\\Beaver\\CacheLock::lock('lock\_name', 1);

unlock function : \\Hamdon\\Beaver\\CacheLock::unLock('lock\_name');

check function : \\Hamdon\\Beaver\\CacheLock::check('lock\_name');

setDriver function : \\Hamdon\\Beaver\\CacheLock::setDriver('redis');

setDriver parameter : apc、array、database、file、memcached、redis

InputFilter
===========

[](#inputfilter)

Hamdon\\Beaver\\InputFilter::isId(111);

Hamdon\\Beaver\\InputFilter::isTrue(1==1,'your tips');

Hamdon\\Beaver\\InputFilter::isNotTrue(1==2,'your tips');

Hamdon\\Beaver\\InputFilter::isNotSet($aa,'your tips');

Hamdon\\Beaver\\InputFilter::isNull($aa,'your tips');

Hamdon\\Beaver\\InputFilter::isNotNull($aa,'your tips');

Hamdon\\Beaver\\InputFilter::isEmpty($aa,'your tips');

Hamdon\\Beaver\\InputFilter::throwAMessage('your tips');

Hamdon\\Beaver\\InputFilter::isPhone('13800000000');

Hamdon\\Beaver\\InputFilter::isAbbr('aaabd');

Hamdon\\Beaver\\InputFilter::isHttp('');

Hamdon\\Beaver\\InputFilter::isIdNo('440981000000000000');

Hamdon\\Beaver\\InputFilter::isChineseName($cc);

Hamdon\\Beaver\\InputFilter::isRightPassword($cc);

Hamdon\\Beaver\\InputFilter::isHasChinese($cc);

Hamdon\\Beaver\\InputFilter::isBetWeenZeroAndOneHundred(98);

Hamdon\\Beaver\\InputFilter::isBankCardOne('1111111111');

Hamdon\\Beaver\\InputFilter::isBankCardTwo('1111111111');

Hamdon\\Beaver\\InputFilter::isBankCard('1111111111');

Hamdon\\Beaver\\InputFilter::isCarLicense('1111111111');

Hamdon\\Beaver\\InputFilter::isDate('2019-4-10');

Hamdon\\Beaver\\InputFilter::isEmail('');

Hamdon\\Beaver\\InputFilter::isDateDay(20);

ImageService
============

[](#imageservice)

generate image thumb

要安装exif扩展

可以进到源文件目录

```
#cd ext/exif
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make && make install
#php --ini
#vim exif.ini
#extension=exif.so

```

```
    //生成缩略图
    $image = 'http://www.heliwebs.com/file/20190110/aaaa.png';
    $wh = getimagesize($image);
    $w = $wh[0] ?? 250;
    $h = $wh[1] ?? 500;
    $thumbnail = Hamdon\Beaver\ImageService::create()->thumb($image, intval($w / 3), intval($h / 3));

    //图片转base64
    $aa = '/file/20190410/aaa.png';
    $base64 = Hamdon\Beaver\ImageService::create()->base64EncodeImage($aa);

```

CurlService
===========

[](#curlservice)

Hamdon\\Beaver\\CurlService::create()-&gt;get('[http://www.heliwebs.com',\["a"=&gt;1\]](http://www.heliwebs.com',%5B%22a%22=%3E1%5D))

Hamdon\\Beaver\\CurlService::create()-&gt;realGet('')

Hamdon\\Beaver\\CurlService::create()-&gt;post('[http://www.heliwebs.com',\["a"=&gt;1\]](http://www.heliwebs.com',%5B%22a%22=%3E1%5D))

Hamdon\\Beaver\\CurlService::create()-&gt;realPost('[http://www.heliwebs.com',\["a"=&gt;1\]](http://www.heliwebs.com',%5B%22a%22=%3E1%5D))

Hamdon\\Beaver\\CurlService::create()-&gt;postJson('[http://www.heliwebs.com',\["a"=&gt;1\]](http://www.heliwebs.com',%5B%22a%22=%3E1%5D))

Hamdon\\Beaver\\CurlService::create()-&gt;curlUpload('[http://www.heliwebs.com',\["a"=&gt;1\],\['/file/20190410/aaa.png','/file/20190410/bbbb.png'\]](http://www.heliwebs.com',%5B%22a%22=%3E1%5D,%5B'/file/20190410/aaa.png','/file/20190410/bbbb.png'%5D))

SpreadQrService
===============

[](#spreadqrservice)

```
$fontColor = 'rgba(0,0,0,1)';
$color = substr($fontColor,5,-1);
$wantColor = explode(',',$color);
$fontFile = public_path('images/bank_template/ztgjkai.ttf');
$qrPreviewSrc = 'images/spread_qr_product_preview';
$logoImg = '/file/20190410/aaa.png';
$textOne = 'aaaaa';
$textTwo = 'bbbbb';
$spreadSrc = SpreadQrService::create()->setFontSize($font_size)
            ->setTextColorR($wantColor[0])
            ->setTextColorG($wantColor[1])
            ->setTextColorB($wantColor[2])
            ->setTextColorA($wantColor[3])
            ->setTextOne($textOne)
            ->setTextTwo($textTwo)
			->setFontFile($fontFile)
            ->setFontPositionY($font_position_y)
            ->setFontPositionX($font_position_x)
            ->setTextLineNumber($text_line_number)
            ->setFontNextLineDistance($font_next_line_distance)
            ->setQrAllWidth($qr_width)
            ->setQrPositionX($qr_position_x)
            ->setQrPositionY($qr_position_y)
            ->setLogoImage($logoImg)
            ->setLogoWidth($logo_width)
            ->setLogoPositionX($logo_position_x)
            ->setLogoPositionY($logo_position_y)
            ->setWxIsRound(0)
            ->setWxImage('images/bank_template/wx.jpg')
            ->setWxAllWidth($wx_width)
            ->setWxPositionX($wx_position_x)
            ->setWxPositionY($wx_position_y)
            ->setBgImgSrc($bg_img_src)
            ->setQrImgFileName($qr_preview_src)
            ->composeQrImg();

```

NumberService
=============

[](#numberservice)

```
//格式化阅读数

Hamdon\Beaver\NumberService::create()->formatViewNumber(111111);

//格式化时间戳

Hamdon\Beaver\NumberService::create()->formatCreatedTime(1555487954);

```

XmlService
==========

[](#xmlservice)

```
//数组转XML

Hamdon\Beaver\XmlService::create()->arrayToXml(['a'=>1]);

//将XML转为array

Hamdon\Beaver\XmlService::create()->xmlToArray('

	Tove
	Jani
	Reminder
	Don't forget me this weekend!

');

```

ZipFileService
==============

[](#zipfileservice)

```
        $dfile =  tempnam('/tmp', 'tmp');//产生一个临时文件，用于缓存下载文件
        $zip = Hamdon\Beaver\ZipFileService::create();
        //----------------------
        $filename = 'my.zip'; //下载的默认文件名

        //以下是需要下载的图片数组信息，将需要下载的图片信息转化为类似即可
        $image = array(
            array('image_src' => 'aaa.png', 'image_name' => mb_convert_encoding('id_card_positive','UTF-8'), 1)),
            array('image_src' => 'bbb.png', 'image_name' => mb_convert_encoding('id_card_back','UTF-8'), 1)),
            array('image_src' => 'ccc.png', 'image_name' => mb_convert_encoding('bank_card_positive','UTF-8'), 1)),
            array('image_src' => 'ddd.png', 'image_name' => mb_convert_encoding('bank_card_back','UTF-8'), 1)),
            array('image_src' => 'eee.png', 'image_name' => mb_convert_encoding('id_card_hand_in','UTF-8'), 1)),
        );

        foreach($image as $v){
            $zip->add_file(file_get_contents($v['image_src']),  $v['image_name']);
            // 添加打包的图片，第一个参数是图片内容，第二个参数是压缩包里面的显示的名称, 可包含路径
            // 或是想打包整个目录 用 $zip->add_path($image_path);
        }
        //----------------------
        $zip->output($dfile);

        // 下载文件
        ob_clean();
        header('Pragma: public');
        header('Last-Modified:'.gmdate('D, d M Y H:i:s') . 'GMT');
        header('Cache-Control:no-store, no-cache, must-revalidate');
        header('Cache-Control:pre-check=0, post-check=0, max-age=0');
        header('Content-Transfer-Encoding:binary');
        header('Content-Encoding:none');
        header('Content-type:multipart/form-data');
        header('Content-Disposition:attachment; filename="'.$filename.'"'); //设置下载的默认文件名
        header('Content-length:'. filesize($dfile));
        $fp = fopen($dfile, 'r');
        while(connection_status() == 0 && $buf = @fread($fp, 8192)){
            echo $buf;
        }
        fclose($fp);
        @unlink($dfile);
        @flush();
        @ob_flush();
        exit();

```

加密解密系列
======

[](#加密解密系列)

```
////DES
$str = 'test';
$key = 'aaaaaaaa';
//DES 加密
$desStr = Hamdon\Beaver\Crypto\DESService::create()->encrypt($str,$key);
//DES 解密
$newStr = Hamdon\Beaver\Crypto\DESService::create()->decrypt($desStr,$key);

////RSA
$privatePemFile = '/aaa/bbb/ccc/ddd/private_pkcs8_key.pem';
$publicPemFile = '/aaa/bbb/ccc/ddd/public_key.pem';
$willSignStr = 'bbbbbbb';
$sha256SourceSignString = hash("sha256", $willSignStr);
//RSA加密
$encrypStr = Hamdon\Beaver\Crypto\RSAService::create()->encryptByPrivateKey($sha256SourceSignString,$privatePemFile);
//RSA解密
$decryptStr = Hamdon\Beaver\Crypto\RSAService::create()->decryptByPublicKey($encrypStr,$publicPemFile);

```

缓存系列：RedisCacheService
======================

[](#缓存系列rediscacheservice)

```
        $type = $request->get('type');
        $data = [];
        RedisCacheService::create()->common('cache_key_' . $type, ['type' => $type], $data, function ($param, &$data) {
            $myModel = MyDataModel::where('type', $param['type'])->first();
            $result = [];
            if($myModel){
                $result['type'] = $myModel->type;
                $result['name'] = $myModel->name;
                $result['version'] = $myModel->version;
                $result['status'] = $myModel->status;
                $result['content'] = $myModel->content;
            }
            $data = $result;
        });
        return $this->success($data);

```

坐标系列：HCoordinateService
=======================

[](#坐标系列hcoordinateservice)

```
$lat1 = '39.886664';
$lng1 = '116.363277';
$lat2 = '39.912149';
$lng2 = '116.411865';

$distance =  HCoordinateService::create()->twoCoordinateDistance($lat1,$lng1,$lat2,$lng2);

```

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

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

Unknown

Total

1

Last Release

2640d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/12ab903f3509b0806cadcdcc6b5f1cd2527ea089a72998e4aff55bf2e31df818?d=identicon)[hamdon](/maintainers/hamdon)

---

Top Contributors

[![hamdon](https://avatars.githubusercontent.com/u/16144622?v=4)](https://github.com/hamdon "hamdon (72 commits)")

### Embed Badge

![Health badge](/badges/hamdon-beaver/health.svg)

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

###  Alternatives

[bagisto/bagisto

Bagisto Laravel E-Commerce

27.6k172.1k9](/packages/bagisto-bagisto)[illuminate/support

The Illuminate Support package.

630113.0M40.6k](/packages/illuminate-support)[oro/platform

Business Application Platform (BAP)

645143.5k114](/packages/oro-platform)[craftcms/feed-me

Import content from XML, RSS, CSV or JSON feeds into entries, categories, Craft Commerce products, and more.

293952.6k30](/packages/craftcms-feed-me)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54681.3k17](/packages/solspace-craft-freeform)[concrete5/core

Concrete core subtree split

20166.1k49](/packages/concrete5-core)

PHPackages © 2026

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