adlawson / vfs
虚拟文件系统
0.12.1
2016-02-20 12:46 UTC
Requires
- php: >=5.5
- psr/log: ^1.0
Requires (Dev)
- adlawson/timezone: ^1.0
- fabpot/php-cs-fixer: ^1.9
- mockery/mockery: ^0.9
- phpunit/phpunit: ^4.7
This package is not auto-updated.
Last update: 2024-09-11 12:30:58 UTC
README
VFS 是一个使用流包装器 API 构建的 PHP 虚拟文件系统。流暴露得就像典型的 file://
或 http://
流一样,对 PHP 内置函数和关键字(如 fopen
和 require
)同样有效。此实现试图忠实地遵循典型流,包括触发警告并适当地处理边缘情况。
您可以选择您喜欢的任何方式安装,但我推荐使用 Composer。
{ "require": { "adlawson/vfs": "*" } }
文档
在创建和挂载文件系统后,您可以通过 PHP 内置函数、VFS 接口或另一个文件系统库提供的接口来操作虚拟文件系统。
<?php use Vfs\FileSystem; use Vfs\Node\Directory; use Vfs\Node\File; // Create and mount the file system $fs = FileSystem::factory('vfs://'); $fs->mount(); // Add `/foo` and `/foo/bar.txt` $foo = new Directory(['bar.txt' => new File('Hello, World!')]); $fs->get('/')->add('foo', $foo); // Get contents of `/foo/bar.txt` $fs->get('/foo/bar.txt')->getContent(); // Hello, World! file_get_contents('vfs://foo/bar.txt'); // Hello, World! // Add `/foo/bar` and `/foo/bar/baz.php` mkdir('vfs://foo/bar'); file_put_contents('vfs://foo/bar.php', '<?php echo "Hello, World!";'); // Require `/foo/bar.php` require 'vfs://foo/baz.php'; // Works with any other file system library too $symfony = new Symfony\Component\Filesystem\Filesystem(); $symfony->mkdir('vfs://foo/bar/baz'); $laravel = new Illuminate\Filesystem(); $laravel->isDirectory('vfs://foo/bar/baz'); //true // Triggers PHP warnings on error just like typical streams rename('vfs://path/to/nowhere', 'vfs://path/to/somewhere'); // PHP Warning: rename(vfs://path/to/nowhere,vfs://path/to/somewhere): No such file or directory in /srv/index.php on line 1; triggered in /srv/src/Logger/PhpErrorLogger.php on line 32
示例用途
如果您需要了解虚拟文件系统可以用于什么,那么您可能不需要它,但以防万一,我已整理了一份小清单作为示例
- 在不写入磁盘的情况下测试文件系统库
- 无
eval
运行时评估(通过write
和require
) - ...我们需要更多!
待办事项
当前任务列在 github issues 页面上,但这里列出了一些以供参考
- 符号链接
- 文件锁
- 权限/ACL
贡献
通过拉取请求接受贡献,但合并之前必须包含通过单元测试。
$ curl -O https://raw.githubusercontent.com/adlawson/vagrantfiles/master/php/Vagrantfile
$ vagrant up
$ vagrant ssh
...
$ cd /srv
$ composer install
$ vendor/bin/phpunit
许可
此库的内容由 Andrew Lawson 以 MIT 许可证 发布。
您可以在 LICENSE
或 http://opensource.org/licenses/mit 中找到此许可证的副本。