marvinjanssen / magicmounter
PHP流包装库,用于神奇地挂载本地或远程文件系统。
This package is not auto-updated.
Last update: 2024-09-29 05:01:39 UTC
README
MagicMounter,由Marvin Janssen(http://marvinjanssen.me)于2017年发布。
MagicMounter可以神奇地挂载“任何东西”。这些挂载可以通过使用PHP的任何文件/流函数通过magic://流包装器进行通用访问。使MagicMounter独特的是,挂载的底层驱动对最终用户是透明的。因此,您可以在某个时刻将本地目录挂载到magic://production,稍后可以通过FTP在相同的挂载点挂载远程目录。
由于MagicMounter作为一个流包装器,所有与流相关的优点都可用。想想所有的流函数、过滤器、迭代器等等。这个事实可以说使它成为PHP中最强大的FTP客户端之一,同时保持相当简洁。
挂载
Magic::mount(string $name,string $type,array $options);
在哪里
$name:挂载的名称(如magic://name)。$type:挂载的类型,定义要加载哪个底层驱动(例如:'fs'、'ftp'、'ftps')。$options:可选的特定驱动器选项,更多信息请参阅驱动器类。
用法
通过Composer安装
composer require marvinjanssen/magicmounter
下载项目作为zip文件并包含
require 'magicmounter/src/magicmounter.php'
示例代码
// Local filesystem: Magic::mount('backup','fs',['directory'=>'/media/backup']); copy('./index.php','magic://backup/index.php'); Magic::unmount('backup'); // FTP: Magic::mount('production','ftp', [ 'host' => 'ftp.example.com', 'username' => 'user', 'password' => 'password', 'directory' => '/var/www' ]); copy('./index.php','magic://production/index.php'); Magic::unmount('production');
驱动器
MagicMounter目前包含3个驱动器。
fs
本地文件系统驱动器。
选项
directory:要挂载的本地目录。
ftp
使用内置ftp_*函数的标准FTP驱动器。驱动器实现了PHP FTP扩展允许的尽可能多的文件系统功能。
选项
username:FTP用户名(默认'anonymous')。password:FTP密码(默认'')。port:FTP端口(默认21)。directory:可选目录(默认'/')。timeout:FTP连接超时(默认90)。measure_transfer:尝试测量传输(默认false)。exception_on_read_error:读取失败时抛出异常(默认false)。
如果启用measure_transfer,请使用以下方法来检索测量结果
$resource = fopen('magic://mount/file.ext','r'); // ... Magic::quote($resource,'download_speed'); Magic::quote($resource,'bytes_downloaded');
ftps
扩展ftp但使用ftp_ssl_connect()。
选项与ftp相同。
扩展
通过您的自定义驱动器扩展MagicMounter非常简单。在MagicMounter\driver命名空间中创建自己的类并实现MagicMounter\Driver接口。一个好的起点是MagicMounter\driver\Fs类。建议您对PHP流包装器有一定的了解。此外,确保尽可能多地实现,以提供全面的多功能驱动器。(支持fseek()、fopen()、touch()、rename()、stat()、fopen()模式等。)
只要实现MagicMounter\Driver,您就可以定义任何自定义驱动器
Magic::driver('custom','\My\CustomDriver'); Magic::mount('production','custom');