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、单文件、多文件上传
<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>
class uploader
{
protected string $dir;
public function make(): array
{
$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;
}
}
include 'uploader.php';
$uploader = new uploader();
$uploader->make();