ghoulphp/ghoul

dev-master 2015-05-08 16:01 UTC

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 — 删除文件