The main point of attributes is to add metadata to code that is easily parseable and can think for itself when you ask for it. Up to now most devs were probably doing this using the PHP docblock thing - those double star multi-line comments. We'd fill them with @tags and then parse that data with Reflection and probably some regular expressions to make any sense of the blob of text.
For a long time now, and like pretty much every other PHP dev out there, at some point I invented my own Object wrapper around arrays to give them nice OOP interfaces. I am a low level person so implementing my own wrappers is far more entertaining to me than just using one of the 34859 that already exist. Mine ended up in a library called Nether\Object that provides a few utilities for things I found myself doing too often making arrays into objects and maybe even back again.
The class in question though Nether\Object\Datastore is
really just a fancy wrapper to handle arrays without having [...]
This a test post using a new editor with a new storage format. It is using Editor.js for a WYSIWYG-ish editor, which instead of HTML, generates a JSON structure where each "paragraph" ends up being its own block with its own properties. It has been a lot of work to pivot but the primary thing is that it handles blogging about programming code a lot nicer than all the rest did.
You've built a fancy new photo uploader into your app and in less than 10 minutes after rolling it to production someone uploads a bunch of photos and they are sideways, upside down, or even worse... backwards. Welcome to the internet where phones are able to upload directly from their photo gallery. It's fine, we can fix this.
It may not be believable considering how often even to this day
plain-text passwords get leaked, but the history of the password hash is
a long one. Way back when I was just starting web dev 22 some years
ago, the common practice was when a user creates an account you hash
their password and store that value. Then every time they log in you
take what they give you, hash it, see if the hash matched what you