花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述stream_wrapper_register()相关的知识,希望能为你提供帮助。
concept:
流(Stream)php4.3引进,用于统一数据操作,以使共享同一套函数,比如file_get_contents()<
即可打开本地文件也可以访问url>
,简单点讲,流就是表现出流式数据行为的资源对象。是对流式数据的抽象.
流有点类似数据库抽象层,在数据库抽象层方面,不管使用何种数据库,在抽象层之上都使用相同的方式操作数据,
而流是对数据的抽象,它不管是本地文件还是远程文件还是压缩文件等等,只要来的是流式数据,那么操作方式就是一样的.
有了流这个概念就引申出了包装器wrapper这个概念,每个流都对应一种包装器
流是从统一操作这个角度产生的一个概念,而包装器呢是从理解流数据内容出发产生的一个概念,也就是这个统一的操作方式怎么操作或配置不同的内容;
【stream_wrapper_register()】这些内容都是以流的方式呈现,但内容规则是不一样的,比如http协议传来的数据是流的方式,但只有http包装器才理解http协议传来的数据的意思,
官方手册说:“
一个包装器是告诉流怎么处理特殊协议或编码的附加代码”
明白这句话的意思了吗?
包装器可以嵌套,一个流外面包裹了一个包装器后,还可以在外层继续包裹包装器,这个时候里层的包装器相对于外层的包装器充当流的角色
php支持的协议和包装器请看这里:http://php.net/manual/zh/wrappers.php:
<
PHP 带有很多内置 URL 风格的封装协议,可用于类似
fopen()、
copy()、
file_exists()
和
filesize()
的文件系统函数。 除了这些封装协议,还能通过
stream_wrapper_register()
来注册自定义的封装协议。>
默认的支持了一些协议和包装器,请用stream_get_wrappers()函数查看.也可以自定义一个包装器,用stream_wrapper_register()注册
尽管RFC 3986里面可以使用:做分割符,但php只允许://,所以url请使用"scheme://target"这样的格式
reference:
https://blog.csdn.net/u011474028/article/details/52814049
推荐阅读
- Android Studio 直播弹幕
- 新手必看!Office Web Apps 2013 安装与配置(实战)
- domain logic approaches
- Android场景-001- Menu动态改变
- @GetMapping和@PostMapping接收参数的格式
- Android开发之字体设置
- [Android] Android 实现类似 今日头条 视频播放列表
- Android高版本联网失败报错:Cleartext HTTP traffic to xxx not permitted解决方法
- 6个针对NodeJS应用程序的最佳监视工具