PHP 文件操作处理类,处理 JSON 文件

PHP 文件操作处理类,处理 JSON 文件

日常开发里,处理文件是常有的事,特别是 JSON 格式的文件,不管是存配置还是数据都很常见。最近整理了一个 FileHandler 类,封装了创建、读取、写入这些基础操作,用着还挺顺手,记录下来方便以后查看。

类的代码

<?php
/**
 * 文件操作处理类
 * 封装文件的创建、读取、写入等基础操作,操作结果返回布尔值
 */
class FileHandler
{
    /**
     * 文件路径
     * @var string
     */
    private $filePath;

    /**
     * 构造函数
     * @param string $filePath 文件路径
     */
    public function __construct($filePath)
    {
        $this->filePath = $filePath;
    }

    /**
     * 检查文件是否存在,不存在则创建
     * @return bool 操作结果(成功返回true,失败返回false)
     */
    public function createIfNotExists()
    {
        if (file_exists($this->filePath)) {
            return true;
        }

        // 创建目录(如果需要)
        $dir = dirname($this->filePath);
        if (!is_dir($dir) && !mkdir($dir, 0777, true)) {
            return false;
        }

        // 创建文件并写入空对象
        return file_put_contents($this->filePath, '{}') !== false;
    }

    /**
     * 读取文件内容并解析为数组
     * @return array 解析后的数组(失败返回空数组)
     */
    public function readJsonData()
    {
        if (!file_exists($this->filePath)) {
            return [];
        }

        $content = file_get_contents($this->filePath);
        if ($content === false) {
            return [];
        }

        $data = json_decode($content, true);
        return (json_last_error() === JSON_ERROR_NONE) ? ($data ?: []) : [];
    }

    /**
     * 将数组数据写入文件(JSON格式)
     * @param array $data 要写入的数据
     * @return bool 操作结果
     */
    public function writeJsonData($data)  
    {
        $jsonContent = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
        if ($jsonContent === false) {
            return false;
        }

        return file_put_contents($this->filePath, $jsonContent) !== false;
    }

    /**
     * 检查目录是否存在,不存在则创建(静态方法)
     * @param string $dirPath 目录路径
     * @return bool 操作结果
     */
    public static function createDirIfNotExists($dirPath) 
    {
        if (is_dir($dirPath)) {
            return true;
        }
        return mkdir($dirPath, 0755, true);
    }
}

主要功能说明

  1. 初始化文件路径:通过构造函数传入文件路径,后续操作都基于这个路径。
  2. 创建文件(含目录):createIfNotExists 方法会检查文件是否存在,不存在的话会先创建目录(支持多级),再创建文件并写入空的 JSON 对象。
  3. 读取 JSON 数据:readJsonData 方法读取文件内容,解析成数组,处理了文件不存在、读取失败、JSON 解析错误等情况,失败时返回空数组。
  4. 写入 JSON 数据:writeJsonData 方法把数组转成 JSON 字符串(带格式化和中文不转义),然后写入文件。
  5. 创建目录:静态方法 createDirIfNotExists 用于检查目录是否存在,不存在则创建,方便单独使用。

简单用法示例

// 创建文件
$fileHandler = new FileHandler('./data/user.json');
$fileHandler->createIfNotExists();

// 写入数据
$data = ['id' => 1, 'name' => '测试'];
$fileHandler->writeJsonData($data);

// 读取数据
$readData = $fileHandler->readJsonData();
print_r($readData);

// 创建目录
FileHandler::createDirIfNotExists('./uploads');

这个类比较基础,应付一般的 JSON 文件操作足够了,以后有其他需求再扩展就行。

posted @ 2025-08-13 15:55  xingduo  阅读(12)  评论(0)    收藏  举报