使用stream封装了个协议注册后为什么不执行

`<?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才对吧?

回复
阅读 901
1 个回答

打开方式应该是类似url格式,例如 opendir('dir_wrapper://aa')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏