Download the PHP package thefunpower/helper without Composer

On this page you can find all versions of the php package thefunpower/helper. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package helper

安装

在composer.json中添加

"thefunpower/helper": "dev-main" 

助手工具类或函数

需要定义PATH目录,项目的根目录

define("PATH",__DIR__.'/');

需要定义WWW_PATH目录,网站访问的目录,有时PATH与WWW_PATH是一样的

define("WWW_PATH",__DIR__.'/');

确保有data uploads两个目录且可写.

data在根目录 uploads在网站访问的目录

Predis Publish Subscribe

连接

predis($host,$port,$auth);

发布消息

redis_pub("demo","welcome man");
redis_pub("demo",['title'=>'yourname']);

取订阅消息

redis_sub("demo",function($channel,$message){
  echo "channel ".$channel."\n";
  print_r($message);
}); 

Predis GEO

连接

predis($host,$port,$auth);

获取

$s = predis_geo_pos('places',[
    '上海外滩','北京天安门' 
]); 
pr($s) ; 

添加

predis_add_geo('places',[
    [ 
        'lat'=>'116.397128',
        'lng'=>'39.916527',
        'title'=>'北京天安门'
    ],
    [ 
        'lat'=>'121.473701',
        'lng'=>'31.230416',
        'title'=>'上海外滩'
    ],
    [ 
        'lat'=>'121.45668',
        'lng'=>'31.21706',
        'title'=>'襄阳公园'
    ], 
]);

附近分页

pr(predis_get_pager('places', 121.45668, 31.21706));

RPC

服务端

class ServerGetUser{
    public function getInfo($name = 'abc'){
        return ['welcome'=>$name,'token'=>rpc_token()];
    }
}
rpc_server("ServerGetUser");

客户端

$client = rpc_client("http://127.0.0.1:5000/rpc.php");
$info = $client->getInfo("test");
print_r($info);

Ftp

php.ini中开启ftp扩展

把本地文件同步到FTP上。

如果FTP上目录文件已存在,将会被替换。

use helper_v3\Ftp;
$ftp = Ftp::start([
    'host' =>'IP地址',
    'user' =>'帐号',
    'pwd'  =>'密码',
    'port' =>'端口,默认21', 
]);  
//上传到根目录
Ftp::put_all(__DIR__.'/uploads');
//或上传到指定目录
//Ftp::put_all(__DIR__.'/uploads','uploads');
Ftp::end();

更多方法 https://github.com/Nicolab/php-ftp-client

PDF字体

免费字体

阿里妈妈方圆体   alifanyuan
阿里妈妈数黑体   alishuhei
阿里巴巴普惠体   puhuiti
阿里巴巴普惠体细 puhuitithin
google字体      notosanssc 

默认使用 notosanssc。

helper_v3\Pdf::init([
    'fontDir'=>[''],
    'fontdata'=>[
        'simhei'=> [
            'R' => 'simhei.ttf',
            'I' => 'simhei.ttf', 
        ],
    ],
    'default_font'=>'simhei'
]);

PDF

安装依赖

yum install pdftk   pdftk-java  poppler-utils perl-Image-ExifTool.noarch  ImageMagick ImageMagick-devel  ghostscript -y

生成PDF

https://mpdf.github.io/installation-setup/installation-v7-x.html

use helper_v3\Pdf;

$mpdf = Pdf::init();
$mpdf->WriteHTML('<h1>Hello world!</h1>');
$mpdf->Output();

合并PDF

$input = [
    PATH.'uploads/1.pdf',
    PATH.'uploads/2.pdf',
];
$new_file = '/完整路径/1.pdf';
echo Pdf::merger($input,$new_name);
exit;

合并PDF,包含图片

Pdf::merger_with_image($files, $output);

PDF提取图片

Pdf::pdf_to_image($file,$saveToDir)

取PDF信息

Pdf::get_info($file);

返回

Array
    (
        [header] => Array
            (
                [ModDate] => D
                [Creator] => Microsoft® PowerPoint® 2019
                [CreationDate] => D
                [Producer] => Microsoft® PowerPoint® 2019
                [Author] => Microsoft Office User
                [Title] => PowerPoint 演示文稿
            )
        文档长宽
        [dimensions] => Array
            (
                [0] => 960
                [1] => 540
            )
        2是横版,1是竖版
        [dimensions_type] => 2
    ) 

取PDF页数

Pdf::get_pages($file);

设置PDF信息

Pdf::set_info($file,$output,$arr = []);

其中arr支持title author keywords

生成PDF table

$html = '
<style> 
table{
    width: 100%;
    text-align:left;
    margin: 0 auto;
    border: 1px solid #000000;
    border-collapse: collapse;
} 
th,td {
    border: 1px solid #000000;
    text-align: center;
}
</style>
<table   cellspacing="0" cellpadding="0" border="0"   >
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">First</th>
      <th scope="col">Last</th>
      <th scope="col">Handle</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">1</th>
      <td>Mark</td>
      <td>Otto</td>
      <td>@mdo</td>
    </tr>
    <tr>
      <th scope="row">2</th>
      <td>Jacob</td>
      <td>Thornton</td>
      <td>@fat</td>
    </tr>
    <tr>
      <th scope="row">3</th>
      <td colspan="2">Larry the Bird</td>
      <td>@twitter</td>
    </tr>
  </tbody>
</table>';
    $mpdf = Pdf::init();
    $mpdf->shrink_tables_to_fit = 1;
    $mpdf->WriteHTML($html);
    $mpdf->Output();

HTML转PDF

安装依赖

yum install xorg-x11-server-Xvfb wkhtmltopdf  fontconfig freetype wqy-zenhei-fonts wqy-microhei-fonts 

PHP中调用

html_to_pdf($input_html_file,$output_pdf_file,$return_cmd = false,$exec = false)

如遇条形码可用 php-barcode-generator

composer require picqer/php-barcode-generator

Xls

composer require phpoffice/phpspreadsheet

当前使用 "phpoffice/phpspreadsheet": "^1.20"

生成xls

use helper_v3\Xls;

$all = db_get("catalog_product",'*');

foreach($all as $v){
    $title = $v['title'];
    $desc = $v['desc'];
    $values[] = [
        'title'=>$title,
        'desc'=>$desc,
    ];
}
Xls::create([
    'title'=>'编号',
    'desc'=>'规格',
], $values, 'product', FALSE);

第一个worksheet

Xls::$label = $txt_month.'专票';
Xls::$sheet_width = [
    'A' => "15",
    'B' => "36",
    'C' => "30",
    'D' => "10",
    'E' => "10",
    'F' => "10",
];

更多worksheet

Xls::$works = [
    [
        'title' => $title,
        'label' => $txt_month.'普票',
        'data'  => $new_data,
        'width' => Xls::$sheet_width,
    ]
];

合并

Xls::$merge = [
    'A18:E22' 
];
Xls::create($title, $values, $name, FALSE);

消息订阅

依赖

yarn add ioredis 
yarn add ws 

1.生成server.js

echo create_node_ws_server($ws_port=3006,$topic=['demo'],$redis_host='127.0.0.1',$port='6379',$auth='');

复制代码至server.js

启动server

node server.js

2.HTML添加监听

依赖 reconnecting-websocket.js

https://github.com/joewalnes/reconnecting-websocket

<script>

</script>

其中ws://127.0.0.1:3006 如果是 wss 则wss://yourdomain/wss

3.php发送消息

redis_pub("demo",['title'=>'yourname']);

如使用wss则需配置Nginx转发

location /wss {
    proxy_pass http://127.0.0.1:3006;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    rewrite /wss/(.*) /$1 break;
    proxy_redirect off;
}

测试

redis_sub("demo",function($channel,$message){
  echo "channel ".$channel."\n";
  print_r($message);
});

pusher

https://pusher.com/

PUSHER_APP_KEY = 
PUSHER_APP_SECRET = 
PUSHER_APP_ID = 
PUSHER_APP_CLUSTER =  

前端需要加载JS

<script src="https://js.pusher.com/8.0.1/pusher.min.js"></script>
<script type="text/javascript">
var pusher = new Pusher("<?=get_config("PUSHER_APP_KEY")?>", {
  cluster: "<?=get_config("PUSHER_APP_CLUSTER")?>",
});
var channel = pusher.subscribe("netteadmin");
channel.bind("notice", (data) => {
   console.log(data);
});
</script>

发送消息

helper_v3\Pusher::sender($channel,$event,$data = []);
或使用
send_pusher($data = [],$channel='netteadmin',$event='notice');

xcookie 加密

//设置
xcookie("ss",1);
xcookie("ss",['title'=>'tt']);
//读取
pr(xcookie("ss"));
//删除
xcookie_delete("ss");  

redis锁

global $redis_lock; 
//锁前缀
global $lock_key;

$redis_lock = [
    'host'=>'',
    'port'=>'',
    'auth'=>'',
];

lock_call('k',function(){

},second); 

gz压缩数据

$s = gz_encode(['a'=>"test"]);
echo $s; 
echo "解压后<br>";
print_r(gz_decode($s));

SCSS

scss链接

<link rel="stylesheet" href="<?=scss("app.scss",true)?>" />

也可以直接调用

<style>

</style>

scss文件语法,参考 http://www.uinio.com/Web/Scss/

$color: red;
.navigation {
    ul {
        line-height: 20px;
        color: blue;
        a {
            color: $color;
        }

    }
}

.footer {
    .copyright {
        color: silver;
    }
}

贝塞尔

$blob = line_bezier([
    'front_border'=>'#000',
    'fill_color'=>'red',
    'background_color '=>'#fff', 
    'stroke_opacity'=>1,
    'stroke_width'=>1,
    'data'=>[
        [
            ['x' => 10.0 * 5, 'y' => 10.0 * 5],
            ['x' => 30.0 * 5, 'y' => 90.0 * 5],
            ['x' => 25.0 * 5, 'y' => 10.0 * 5],
            ['x' => 50.0 * 5, 'y' => 50.0 * 5],
        ], 
        [
            ['x' => 50.0 * 5, 'y' => 50.0 * 5],
            ['x' => 75.0 * 5, 'y' => 90.0 * 5],
            ['x' => 70.0 * 5, 'y' => 10.0 * 5],
            ['x' => 90.0 * 5, 'y' => 40.0 * 5],
        ],
        'translate'=>[0,200],
        [
            ['x' => 10 * 5, 'y' => 10 * 5], 
            ['x' => 30 * 5, 'y' => 90 * 5], 
            ['x' => 25 * 5, 'y' => 10 * 5],
            ['x' => 50 * 5, 'y' => 50 * 5],
        ],
        [
            ['x' => 50 * 5, 'y' => 50 * 5], 
            ['x' => 80 * 5, 'y' => 50 * 5],
            ['x' => 70 * 5, 'y' => 10 * 5],
            ['x' => 90 * 5, 'y' => 40 * 5],
         ],

    ]
],'base64');
//base64时
echo "<img src='data:image/png;base64,".$blob."' />";exit;
//blob时
header("Content-Type: image/png");
echo $blob;exit;

获取本地音视频时长

需手动安装getid3

composer require james-heinrich/getid3 

使用

get_video_time($video_local_path)

BLOCK

1.写CSS文件


#app{
    padding-left: 0px !important;
    padding-right: 0px !important;
} 

2.输出

天地图

tianditu.gov.cn

set_config("tianditu","服务端key");
pr(helper_v3\Map::get_lat('上海市襄阳公园'));
pr(helper_v3\Map::get_address(31.218970,121.452340));

输出

Array
(
    [lat] => 31.218970
    [lng] => 121.452340
)
Array
(
    [address] => 上海市徐汇区湖南路街道淮海中路1008号
    [parse] => Array
        (
            [nation] => 中国
            [province] => 上海市
            [county] => 徐汇区
            [address] => 淮海中路1008号
        )

)

开源协议

Apache License 2.0


All versions of helper with dependencies

PHP Build Version
Package Version
Requires thefunpower/rpc_php Version ^2
nicolab/php-ftp-client Version ^2.0
mpdf/mpdf Version ^8.1
iio/libmergepdf Version ^3.1
predis/predis Version ^2.1
league/csv Version ^9.0
overtrue/socialite Version ^4.9
symfony/lock Version ^6
pusher/pusher-php-server Version ^7.2
phpoffice/phpspreadsheet Version *
spatie/array-to-xml Version *
imangazaliev/didom Version ^2.0
scssphp/scssphp Version ^1
picqer/php-barcode-generator Version ^2
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package thefunpower/helper contains the following files

Loading the files please wait ...