这两天在看 java URL/URI 和 spring Resource,产生一个想法,能不能把 php 中 PDO/file/cache 统一起来?
很多 php 框架在对文件操作方面设计了 FileSystem component,cache 大多也是独立的模块( psr6/16 )。
pdo 全称是 php data object,原则上来讲 file/cache 也应该属于 data source,另外 dsn = data source name,这个 dsn 其实格式上跟 uri 很像( dsn URI invocation 其实还是为了找到 dsn 字符串),为什么 PDO 不把 file/cache 操作也封装进来呢?为它们设计一套 dsn。
或者当我个人在设计 Resource 的时候,是不是可以设计一层 wrapper,把 PDO/FileSystem/Cache 封装起来,在 PDO dsn 之上加入新的 dsn 规则,通过 ResourceFactory 配合 DsnParser 来创建出不同的 Resource 实例?
Resource 接口除了基本的 getInputStream/read 这种读取字节流或者字符串的方法之外,还提供 getFile/getCache 来适应 FileResource/CacheResource 的情况。
比如:
cache:adapter=redis;host=127.0.0.1;port=6379
便返回一个可以操作 redis 的 Cache 实例(继承自 Resource 接口)
file:url=/foo/bar/test.txt
返回一个 FileSystem 实例("file:" 其实属于 URL 的 protocol,可以考虑把 dsn 统一映射到一套自定义的 URI 规则上)
不知道这套方案是否可行,或者已经有人这么做了?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.