`<?php
class StreamDir
{
public $context = NULL;
public function dir_opendir(string $path, int $options)
{
return false;
}
public function dir_readdir()
{
}
public function dir_closedir()
{
}
public function dir_rewinddir()
{
}
public function mkdir(string $path, int $mode, int $options)
{
}
public function rmdir(string $path, int $options)
{
}
}
$wrapper_list = stream_get_wrappers();
if(in_array('diy_wrapper', $wrapper_list))
{
echo "流包装器已存在\n";
exit(0);
}
stream_wrapper_register("dir_wrapper", "StreamDir");
$context = stream_context_create(['dir_wrapper' => []]);
$dir = opendir('./aa/', $context);
var_dump($dir);
`
由于几乎没有可借鉴的试例,所以我并不知道是不是因为我使用的方法不对还是怎么了。按照我的设想opendir的时候会去调用注册的‘dir_wrapper’包装器里的dir_opendir这个函数,函数返回了一个false,那么后面的var_dump应该也是返回false才对吧?
打开方式应该是类似url格式,例如
opendir('dir_wrapper://aa')