Filesystem源码解析(下)

Laravel5.2之Filesystem源码解析(下)

帅比萌擦擦* 提交于 2019-12-03 20:36:44
说明:本文主要学习下\League\Flysystem这个Filesystem Abstract Layer,学习下这个package的设计思想和编码技巧,把自己的一点点研究心得分享出来,希望对别人有帮助。实际上,这个Filesystem Abstract Layer也不是很复杂,总的来说有几个关键概念: Adapter:定义了一个AdapterInterface并注入到\League\Flysystem\Filesystem,利用Adapter Pattern来桥接不同的filesystem。如AWS S3的filesystem SDK,只要该SDK的S3 Adapter实现了AdapterInterface,就可以作为\League\Flysystem\Filesystem文件系统驱动之一。再比如,假设阿里云的一个filesystem SDK名叫AliyunFilesystem SDK,想要把该SDK装入进\League\Flysystem\Filesystem作为驱动之一,那只要再做一个AliyunAdapter实现AdapterInterface就行。这也是Adapter Pattern的设计巧妙的地方,当然,这种模式生活中随处可见,不复杂,有点类似于机器人行业的模块化组装一样。 Relative Path:这个相对路径概念就比较简单了,就是每一个文件的路径是相对路径