ghoulphp / ghoul
Requires
- league/flysystem: ~1.0
This package is not auto-updated.
Last update: 2024-09-28 17:38:30 UTC
README
尚未工作
ghoul 是一个为 PHP 提供的“原生”文件系统抽象库。它不是你奶奶的抽象库。
安装
$ composer require ghoulphp/ghoul $ composer require ghoulphp/[adapter-name]
用法
(new ghoul) ->with(new MemoryAdapter()) // Attaches a MemoryAdapter to the ghoul instance ->bind(); // Filesystem functions now point to this ghoul file_put_contents("file.txt", "Hello World!"); // Stored in memory echo file_get_contents("file.txt"); // Prints "Hello World" ghoul::halt(true); // Halts and cleans up the active ghoul
绑定
ghoul 绑定非常简单。一次只能绑定一个实例,如果另一个实例尝试覆盖它,将会抛出异常。ghoul 允许您静态地或通过 ghoul 对象来管理绑定。以下是一些示例。
$g = new ghoul; // NOT BOUND | NOT STORED $g->bind(); // BOUND | STORED $g->release(); // NOT BOUND | STORED ghoul::resume(); // BOUND | STORED ghoul::halt(true); // NOT BOUND | NOT STORED
这两个静态方法控制当前存储的对象。无法静态绑定 ghoul,您只能停止或恢复已存储的实例。
注意
当您释放或停止释放 ghoul 时,引用仍然保持,直到另一个绑定覆盖它。这将防止对象被垃圾回收。如果您想确保快速垃圾回收,请将第一个参数传递为 true。这样做意味着您不能调用 ghoul::resume() 方法,您将能够调用 ghoul->bind() 并从头开始绑定。
与 flysystem 的兼容性
PHP league 的 flysystem 是一个更好的抽象库,并得到更多贡献者和经验的支持。因此,ghoul 是作为它的扩展构建的,而不是作为独立库。ghoul 依赖于 flysystem,并且可以开箱即用使用所有 flysystem 适配器。这些适配器的问题在于它们没有公开 ghoul 所需的所有功能。因此,ghoul 有自己的适配器系统,它扩展了 flysystem 的功能。ghoul 适配器允许您使用所有文件系统功能。
与底层静态管理类的交互
ghoul 有几个静态类负责使一切在外观上看起来不是静态的。与这些类的交互是不推荐的,功能应该在更高层次的对象中可用。
StaticInstance
StaticInstance 允许整个程序中一个实例被“绑定”。它所做的只是存储该实例,并允许设置和获取。非常简单。
MethodRouter
MethodRouter 静态地将函数调用路由到当前绑定的实例。它依赖于 StaticInstance 来工作,但任何一个都可以自动初始化另一个。
这有什么作用?
ghoul 覆盖了内置的文件系统方法,因此您不需要更改任何代码。
但这很糟糕,代码标准去哪儿了?
您正在使用 PHP。
我可以关闭 ghoul 吗?
是的。但这不会很有趣。
目前支持哪些方法?
- basename — 返回路径的后缀名称组件
- chgrp — 改变文件组
- chmod — 改变文件模式
- chown — 改变文件所有者
- clearstatcache — 清除文件状态缓存
- copy — 复制文件
- delete — 查看 unlink 或 unset
- dirname — 返回父目录路径
- disk_free_space — 返回文件系统或磁盘分区上的可用空间
- disk_total_space — 返回文件系统或磁盘分区的总大小
- diskfreespace — disk_free_space 的别名
- fclose — 关闭打开的文件指针
- feof — 测试文件指针的文件末尾
- fflush — 将输出刷新到文件
- fgetc — 从文件指针获取字符
- fgetcsv — 从文件指针获取行并解析为 CSV 字段
- fgets — 从文件指针获取行
- fgetss — 从文件指针获取行并删除 HTML 标签
- file_exists — 检查文件或目录是否存在
- file_get_contents — 将整个文件读入字符串
- file_put_contents — 将字符串写入文件
- file — 将整个文件读入数组
- fileatime — 获取文件的最后访问时间
- filectime — 获取文件的inode更改时间
- filegroup — 获取文件组
- fileinode — 获取文件的inode
- filemtime — 获取文件的修改时间
- fileowner — 获取文件所有者
- fileperms — 获取文件权限
- filesize — 获取文件大小
- filetype — 获取文件类型
- flock — 可移植的咨询式文件锁定
- fnmatch — 将文件名与模式匹配
- fopen — 打开文件或URL
- fpassthru — 输出文件指针上所有剩余的数据
- fputcsv — 将行格式化为CSV并写入文件指针
- fputs — fwrite的别名
- fread — 二进制安全的文件读取
- fscanf — 根据格式解析文件输入
- fseek — 在文件指针上进行查找
- fstat — 使用打开的文件指针获取文件信息
- ftell — 返回文件读/写指针的当前位置
- ftruncate — 将文件截断到给定长度
- fwrite — 二进制安全的文件写入
- glob — 查找匹配模式的路径名
- is_dir — 判断文件名是否是目录
- is_executable — 判断文件名是否可执行
- is_file — 判断文件名是否是常规文件
- is_link — 判断文件名是否是符号链接
- is_readable — 判断文件是否存在且可读
- is_uploaded_file — 判断文件是否通过HTTP POST上传
- is_writable — 判断文件名是否可写
- is_writeable — is_writable的别名
- lchgrp — 更改符号链接的组所有权
- lchown — 更改符号链接的用户所有权
- link — 创建硬链接
- linkinfo — 获取链接信息
- lstat — 获取文件或符号链接的信息
- mkdir — 创建目录
- move_uploaded_file — 将上传的文件移动到新位置
- parse_ini_file — 解析配置文件
- parse_ini_string — 解析配置字符串
- pathinfo — 返回文件路径信息
- pclose — 关闭进程文件指针
- popen — 打开进程文件指针
- readfile — 输出文件
- readlink — 返回符号链接的目标
- realpath_cache_get — 获取realpath缓存条目
- realpath_cache_size — 获取realpath缓存大小
- realpath — 返回规范化的绝对路径名
- rename — 重命名文件或目录
- rewind — 回滚文件指针位置
- rmdir — 删除目录
- set_file_buffer — stream_set_write_buffer的别名
- stat — 获取文件信息
- symlink — 创建符号链接
- tempnam — 创建具有唯一文件名的文件
- tmpfile — 创建临时文件
- touch — 设置文件的访问和修改时间
- umask — 更改当前umask
- unlink — 删除文件