Wow. This is the anti-Scheme. It's like they took everything good in language design and decided to do the exact opposite. "Let's make a function that has the side effect of introducing variables into scope. That's a great idea."
Oh, Bog....
Wow. This is the anti-Scheme. It's like they took everything good in language design and decided to do the exact opposite. "Let's make a function that has the side effect of introducing variables into scope. That's a great idea."
Oh, Bog....
Since when is Scheme the arbiter of what is good or bad?
PHP lets you do this, or not do this, your choice. Like C, PHP doesn't tell you what to do, it's up to you.
That's why people actually use it.
Use it or not, if you don't like it you can smash stuff with the triblade screw driver. Or the 7 point socket wrench.
PHP provides a wealth of very useful tools that you can choose to use or not. I don't know why people think my 7 point socket wrench is dumb, it works quite well to round the edges of 6 sided bolts and saves a lot of money on buying those special bolts that can't be removed once tightened.
Your post might be [slightly] humorous, but as an argument against PHP language constructs it fails miserably.
Features that have limited real benefits with lots of risk get abused all the time. They are the retarded tools of the world creating technical debt for everybody else and they should be retired.
Extract is one of the stupidist language feature conceived precisely because it puts something so ripe for abuse into the hands of idiots. It even has a simple name that practically encourages its abuse.
Or making critical parts of infrastructure work by a cron job that calls wget.
For some reason PHP needs extract, because a dictionary just won't do.
foo["var_x"]
// for some reason needs to be:
$var_xLanguage hacks like the one we're discussing are fine IF:
- You work with people who avoid bad features.
- You can avoid using code that uses bad features (less of a problem, until you have to debug things and then you're in a world of hurt).
- The features are not short-sighted hacks that prevent the language from moving forward (e.g., eliminate the opportunity to make things faster through dynamic compilation or whatever).
Scheme is a great language that is not useful in the real world, while PHP is a terrible language that happens to be in wide use. Neither of these positions are unique, and honestly I'd much rather use a bad language with good tooling than a great language with poor support. But I will continue to point out PHP's flaws, which are many and just howling bad, and work towards improving the alternatives.
And ``let'' is? ;-)
Doing a (let [request] (check-auth ...)) would be equally dumb. Let's not blame the tools.
My point is that trusting user input is the error, not having the ability to play with the scope.