PHPackages                             gzqsts/file-path - 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. gzqsts/file-path

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

gzqsts/file-path
================

文件路径处理工具类，提供路径解析、操作和格式化功能

v1.0.0(6mo ago)07MITPHPPHP &gt;=8.0

Since Nov 12Pushed 6mo agoCompare

[ Source](https://github.com/gzqsts/file-path)[ Packagist](https://packagist.org/packages/gzqsts/file-path)[ RSS](/packages/gzqsts-file-path/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

File Path - 文件路径处理工具包
=====================

[](#file-path---文件路径处理工具包)

提供强大的文件路径解析、操作和格式化功能。

功能特性
----

[](#功能特性)

- ✅ 路径解析：支持解析文件路径、URL路径等
- ✅ 不可变对象：所有修改操作返回新实例，保证数据安全
- ✅ 链式调用：支持流畅的链式操作
- ✅ 路径操作：支持路径追加、修改、替换等操作
- ✅ 文件信息：获取文件名、扩展名、目录等
- ✅ 分隔符控制：支持自定义目录分隔符
- ✅ URL支持：支持解析和操作URL路径

环境要求
----

[](#环境要求)

- PHP &gt;= 8.0

安装
--

[](#安装)

通过 Composer 安装：

```
composer require gzqsts/file-path
```

快速开始
----

[](#快速开始)

```
use Gzqsts\FilePath\Path;

// 创建路径对象
$path = new Path('uploads/images/2024/photo.jpg');

// 获取文件信息
echo $path->getFilename();    // photo
echo $path->getExtension();   // jpg
echo $path->getBasename();    // photo.jpg
echo $path->getPath();        // uploads/images/2024

// 转换为字符串
echo (string)$path;           // uploads/images/2024/photo.jpg
```

基本用法
----

[](#基本用法)

### 创建路径对象

[](#创建路径对象)

```
use Gzqsts\FilePath\Path;

// 从文件路径创建
$path = new Path('uploads/images/photo.jpg');

// 从URL创建
$path = new Path('https://example.com/files/document.pdf');

// 从相对路径创建
$path = new Path('../images/logo.png');
```

### 获取路径信息

[](#获取路径信息)

```
$path = new Path('uploads/images/2024/photo.jpg');

// 获取文件名（不含扩展名）
$filename = $path->getFilename();  // photo

// 获取文件扩展名
$extension = $path->getExtension(); // jpg

// 获取完整文件名（含扩展名）
$basename = $path->getBasename();  // photo.jpg

// 获取目录路径
$dirPath = $path->getPath();       // uploads/images/2024

// 获取协议（URL）
$scheme = $path->getScheme();      // https 或 ''

// 获取主机（URL）
$host = $path->getHost();          // example.com 或 ''

// 获取端口（URL）
$port = $path->getPort();          // 80 或 ''

// 获取查询参数（URL）
$query = $path->getQuery();        // key=value 或 ''
```

### 修改路径

[](#修改路径)

所有修改操作都返回新的 `Path` 实例，原对象不变（不可变对象模式）。

```
$path = new Path('uploads/images/photo.jpg');

// 修改文件名
$newPath = $path->withFilename('newphoto');
// 结果: uploads/images/newphoto.jpg

// 修改扩展名
$newPath = $path->withExtension('png');
// 结果: uploads/images/photo.png

// 修改完整文件名
$newPath = $path->withBasename('newfile.png');
// 结果: uploads/images/newfile.png

// 追加目录
$newPath = $path->withPath('2024/11');
// 结果: uploads/images/2024/11/photo.jpg

// 替换整个路径
$newPath = $path->withPathAll('files/documents');
// 结果: files/documents/photo.jpg

// 修改协议
$newPath = $path->withScheme('https');
// 结果: https://uploads/images/photo.jpg

// 修改主机
$newPath = $path->withHost('example.com');
// 结果: //example.com/uploads/images/photo.jpg

// 修改端口
$newPath = $path->withPort('8080');
// 结果: //:8080/uploads/images/photo.jpg

// 添加查询参数
$newPath = $path->withQuery('token=abc123');
// 结果: uploads/images/photo.jpg?token=abc123
```

### 设置目录分隔符

[](#设置目录分隔符)

```
$path = new Path('uploads/images/photo.jpg');

// 使用正斜杠
$unixPath = $path->withDirSeparator('/');
// 结果: uploads/images/photo.jpg

// 使用反斜杠（Windows风格）
$windowsPath = $path->withDirSeparator('\\');
// 结果: uploads\images\photo.jpg
```

### 路径字符串转换

[](#路径字符串转换)

```
$path = new Path('uploads/images/photo.jpg');

// 转换为字符串（默认）
echo (string)$path;                    // uploads/images/photo.jpg

// 转换为字符串（带前缀路径）
echo $path->toString('storage');       // storage/uploads/images/photo.jpg

// 获取完整路径（包含协议、主机等）
echo $path->getFull();                 // uploads/images/photo.jpg
```

### 创建目录

[](#创建目录)

```
// 静态方法：创建目录
Path::createDirs('/path/to/file.txt');
// 会自动创建 /path/to 目录（如果不存在）
```

### 链式调用

[](#链式调用)

```
$path = new Path('uploads/photo.jpg');

$newPath = $path
    ->withPath('2024/11')
    ->withFilename('newphoto')
    ->withExtension('png')
    ->withDirSeparator('/');

// 结果: 2024/11/newphoto.png
```

完整示例
----

[](#完整示例)

```
