PHP学习开发常用功能函数(自留备用)

1、计算磁盘空间大小
function space_total(int $total):string {
    $config = [3=>'GB',2=>'MB',1=>'KB'];
    foreach ($config as $num=>$unit){
        if ($total>pow(1024,$num)){
            return round($total/pow(1024,$num)).$unit;
        }
    }
    return $total.'B';
}
echo "当前目录所在磁盘的全部磁盘空间".space_total(disk_total_space('.'));
echo "<br/>";
echo "当前目录所在磁盘的剩余磁盘空间".space_total(disk_free_space('.'));
2、分页功能
$page = 100;
echo min($page,max(1,$_GET['page']??1));
3、缓存文件简单思路
if (is_file('blade.cache.php') && filemtime('blade.cache.php') > (time() - 60)) {
    include 'blade.cache.php';
} else {
    ob_start();
    include 'blade.php';
    $content = ob_get_contents();
    file_put_contents('blade.cache.php', $content);
}
4、输出配置文件
$database = ['host'=>'localhost','user'=>'admin','password'=>'123456'];
$config = var_export($database,true);
file_put_contents('database.php','<?php return '.$config.';');
$config = include 'database.php';
echo $config['host'];
5、计算目录大小
function dirSize(string $dir):int{
    $size = 0;
    foreach (glob($dir.'/*') as $file){
        $size+=is_file($file)?filesize($file):dirSize($file);
    }
    return  $size;
}
echo round(dirSize('./img'));
6、删除目录
function delDir(string $dir):bool{
    if (!is_dir($dir)){
        return true;
    }
    foreach (glob($dir.'/*') as $file){
        is_file($file)?unlink($file):delDir($file);
    }
    return rmdir($dir);
}
delDir('./img');
7、复制目录
function copyDir(string $dir,string $to):bool{
    is_dir($to) or mkdir($to,0755,true);
    foreach (glob($dir.'/*') as $file){
        $target = $to.'/'.basename($file);
        is_file($file)?copy($file,$target):copyDir($file,$target);
    }
    return true;
}
copyDir('./img','../img');
8、移动目录
//移动目录分两步执行,第一步是复制目录,第二步是删除目录,所以使用上面两个函数的综合即可
function moveDir(string $dir, string $to):bool
{
    copyDir($dir, $to);
    return delDir($dir);
}
moveDir('./img','../img');
9、上传安全
if ($_FILES['up']['error']>0){
    die('上传失败,请检查文件类型或大小');
}
is_dir('uploads') or mkdir('uploads',0755,true);
$uploadFile = 'uploads/'.time().'.'.pathinfo($_FILES['up']['name'])['extension'];
if (is_uploaded_file($_FILES['up']['tmp_name'])){
    if (move_uploaded_file($_FILES['up']['tmp_name'],$uploadFile)){
        die('上传成功:'.$uploadFile);
    }
}
die('上传错误');
10、单文件、多文件上传
  • 前台代码 index.html
<form action="controller.php" method="post" enctype="multipart/form-data">
    <input type="file" name="up">
    <input type="file" name="image[]">
    <input type="file" name="image[]">
    <button class="btn">提交</button>
</form>
  • 处理代码 uploader.php
class uploader
{
    protected string $dir;

    public function make(): array
    {
        //print_r($_FILES);
        $this->makeDir();
        $files = $this->format();
        $saveFiles = [];
        foreach ($files as $file) {
            if ($file['error'] == 0) {
                if (is_uploaded_file($file['tmp_name'])) {
                    $to = $this->dir . '/' . time() . mt_rand(1, 9999) . '.' . pathinfo($file['name'])['extension'];
                    if (move_uploaded_file($file['tmp_name'], $to)) {
                        $saveFiles[] = [
                            'path' => $to,
                            'size' => $file['size'],
                            'name' => $file['name']
                        ];
                    }
                }
            }
        }
        return $saveFiles;
    }

    //创建上传目录
    private function makeDir(): bool
    {
        $path = 'uploads/' . date('Y/m');
        $this->dir = $path;
        return is_dir($path) or mkdir($path, 0755, true);
    }

    //对不同结构的数据统壹数据格式
    private function format()
    {
        $files = [];
        foreach ($_FILES as $file) {
            if (is_array($file['name'])) {
                foreach ($file['name'] as $key => $value) {
                    $files[] = [
                        'name' => $file['name'][$key],
                        'type' => $file['type'][$key],
                        'tmp_name' => $file['tmp_name'][$key],
                        'error' => $file['error'][$key],
                        'size' => $file['size'][$key],
                    ];
                }
            } else {
                $files[] = $file;
            }
        }
        return $files;
    }
}
  • 调用处理 controller.php
include 'uploader.php';
$uploader = new uploader();
$uploader->make();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值