
PHP is a very weird language, particularly with all its callback functions, reflection and magic method features. It tends toward stringly-typed code, making JavaScript look sensible and straight-forward. (It really isn't.) What's the point of implementing Object-Oriented Programming (OOP) features like class member access modifier keywords (public, private and protected) if you're also going to implement two complex, complicated, cumbersome, verbose and weird means of overriding that? (Reflection's cool in theory, but I've never had a practical use for it in all my long years as a Web developer.) Magic methods just make me go "Gah, why?" It doesn't make any sense to me why anyone would do that, let alone why they'd want to. It just seems like a waste of time and effort, for absolutely no practical value. Why not just make everything public and be done with it?
It's no wonder that a lot of the code written in it by beginners is a completely confusing mess!