stream_wrapper_register()

花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述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

    推荐阅读