Github link for the lazy
Haven’t had a chance yet personally to check out v2, but probably should, we use it quite heavily in our project to leverage multiple filesystems (ftp, Azure and local).
The azure adapter is not ready for v2 yet but it’s on the top of my list so I expect to have it in the next couple of weeks.
I’m curious, from a design abstract opinion, how do you decide to implement individual adapter specific features. I don’t ask about specific concrete examples but more architecturally.
For instance, let’s say one of the platforms azure, s3 etc have something specific only to them. How do you expose that through your framework without limiting those capabilities, but then when you see another platform has something similar, at what point do you decide to try and make something to unify those concepts.
I struggle with this all the time. We build integrations for API connections and sometimes there’s no overlap, but sometimes there’s just enough overlap to call the features comparable.
I think this is an excellent question. I use a couple of things to determine this. I try to distill a common use-case. The first thing I do is to define the consumer needs, starting out from generic to specific. For Flysytem the generic things are: reading, writing, and listing files. For these cases I try to design a uniform approach, see where it fits and where there is friction. Then I try to cater for more higher level concepts, for Flysystem these are operations like rename and copy. These are not available in all filesystem, but can be emulated using the tier 1 functions. The last area is filling gaps with custom concepts, visibility is a good example of this. It’s concept that is not present in any filesystem, but every filesystem has a similar concept that can be represented as a visibility setting.
Lastly, I try to have the cut-off point so the tool is an 80-20 solution. It can do 80% very well, for the rest you’re better off using the specific tooling. People try to add everything in an abstraction, but abstraction are only functional when they are a simplification of the world. It needs to be simpler than the thing you are abstracting, otherwise it’d just be the thing itself.
If you’re looking at abstraction design in applications, focus on the consumer needs first will make sure you’re designing for the right thing. The most important influences are always the business problems, not the specifics of the solution. So designing with that in mind is smart. It’s cheaper to have duplication than to deal with the wrong abstraction. Even though the solution might be comparable, the underlying need can be very different, therefor it’s better to not unify this and don’t focus on DRY-ing out code.
The docs are here: https://flysystem.thephpleague.com/v2/docs/
I use this. Love the code ThePHPLeague releases.
One day, I’d love to contribute.
Contributing is straightforward, submit a PR and it will get at least reviewed. It doesn’t need to be fancy… typo fix are also welcomed (ThePHPLeague package maintainer 😉)
Congrats on the release !
Nice! Excited to give this a go.
Congrats on v2! Happy to see that exceptions have been reworked (issue #620 had been received quite negatively at the time). I will take another, fresh look at this project.
You live and you learn. Resistance meets resistance. Some periods, the amount of negative input you get from maintaining a project like this is quite intense. I’m not perfect in this regard, and at times I’ll shut down stuff that I do not think is critical. This exception scheme is objectively better, as you proposed, but it wasn’t problematic either. So I hope you’ll enjoy the exception setup in v2, and hope you can understand why I didn’t act on it at the time. Open source work is human work after all and I’m not immune to the effects of negative input, I wish I was.
Congrats! I’ve used 1.0 a lot and adviced others to use it
Since you all forgot to get ME a present for my birthday, I’ll give YOU one. I’ve put poured my all into this release and hope you’ll love it as much as I love gifting it to you. The 2.0.0 release of league/flysystem was just tagged! 🥳
posted by @frankdejonge
(Github) | (What’s new)
Who doesn’t like hobbit birthdays better anyway?
why are you being such a downer… if you want to participate on a social platform act social instead of making remarks nobody cares about
Members
Online