4 ms·
I used PHP again last year after almost a decade and it sucks less (a lot less!), but it still sucks. Going from a language with a well organised stdlib with c
by lexicality 2y ago
I used PHP again last year after almost a decade and it sucks less (a lot less!), but it still sucks.
Going from a language with a well organised stdlib with consistent syntax to php is not fun.
Sure, it has a lot of nice features now, and some of the footguns have been removed, but the core language is still there and it's still a mishmash with a bunch of hidden landmines.
- bovermyer 2y agoWhat do you mean you don't have every disjointed combination of needle, haystack memorized? ;p As someone who spent many years developing in (and defending) PHP, I agree with everything you just said. Nowadays, I'd rather reach for Crystal, Go, or Rust for back-end application development, and Python or Typescript (!) for automation scripts.
- nolok 2y ago> What do you mean you don't have every disjointed combination of needle, haystack memorized? ;p This is one of the weakest, "not happening in reality" issue of PHP though. It's the most obvious, and the one who don't use php but glance at it point. But in the real world, any editor you use not only show it but also show a type error if you made a mistake, on top of that after a few hours you know which is which (yes strpos and in_array have an opposite haystack/needle, but each always use the same, once you use them more than 5 times you remember the same way you remember to check for 0 on strpos). There are still flaws in the php world, but the one most commonly pointed out are always sounding funny to me because they're flaws if you show an exemple in a conversation but that you don't actually hit when coding.
- some_furry 2y agoAlso you can just name your arguments now
- lexicality 2y agoI would rather get it right first time every time than get it wrong half the time and have my editor correct me. Good languages don't make you memorize exceptions.
- nolok 2y agoWhich is why it stops being an issue after, what, 2 days ? And most editor also have an autoswap feature for when you have a brain fart because since the language now had proper type hint there is no possibility to misplace a scalar and an array.
- jacobyoder 2y agoBut you see other people just 'get it right' the first time every time without even having to use the language. They just 'know' everything up front, or... read it in a forum 8 years ago and it's perfectly crystalized. It's only the lowly PHP plebes who need an editor to help them get things right the first time. Syntax, method naming, parameter order, return values - these are 100% completely solved problems that never cause anyone ANY problems ever in any other language - this is 1100% a PHP-only problem. Can't you understand? The entire rest of the programming world is excellent except for PHP. Yes... it's a bit /s, and perhaps is a bit much, but... this "my language has no defects!" attitude from everyone crapping on PHP is tiresome. I've been programming as a hobbyist since the 80s, and professionally since the early 90s. Nothing is perfect, everything has warts, the holy wars suck. I've been with PHP since early 96, and have worked in ASP, .NET, Python, Ruby, Java/JVM, Node/JS, and a couple other stacks. They all suck in more than a few ways. For those of you who only ever work in one tech for years without needing to touch anything else... and get to perfect your parameter-order-fu down to a reflex... great. I'm routinely having to switch between different SQL and various server-side languages, and even then ... 'obvious' things like array/string handling have different syntaxes I have to jump between in a single day. (postgresql arrays are 1-based, not 0-based, IIRC). You know what? I deal with it and move on. IDEs/tools help. Memory helps. Nothing is perfect.
- pavel_lishin 2y ago> But in the real world, any editor you use not only show it but also show a type error if you made a mistake Praytell, how does your editor show you a type error when both `needle` and `haystack` are strings?
- deleted 2y ago[deleted]
- zmxz 2y agoCan you share precisely what "mishmash with a bunch of hidden landmines" is? It's hard to trust a stranger from internet claiming something, but we are in IT so it should be relatively trivial to prove your claims, right?
- xtracto 2y agoYou shouldn't trust him. He is sharing his experience with using the language. I hate Rollercoasters, I hate surprises and strong emotions. So if you ask me how Disneyworld is, I'll tell you it sucked for me. But maybe you are onto that, so you shouldn't trust me. Back yo PHP I've used it for super fast tiny dynamic websites, and it works wonders. I wouldn't do an online exchange with it though.
- arp242 2y agoOne somewhat famous hidden landmine is in_array('0010e2', ['1e3']); And that will return true, because you forgot the third "strict" parameter. This is really something strict_types could/should have fixed, but it doesn't. You can have code reviews and static analysers and all of that to catch this, but it's definitely a landmine. I've seen some pretty serious CVEs that were fixed just by adding that last parameter to some in_array() call.
- zmxz 2y agoBut I didn't forget the third strict parameter, because I'm diligent in reading documentation and at my job. Was that everything? You basically state there's a problem because you didn't use the function correctly and language didn't fall head over heels to stop you from doing silly things due to slopiness? P.I.C.N.I.C.
- arp242 2y agoPeople forget this things all the time because people's brains don't work like Spock's brain. There are plenty of junior programmers around that will have to be taught this. It's a footgun. Is it manageable? Sure; I already said that. But that doesn't make it not a footgun. Anyone who says anything else is not serious.