PHP functions you (probably) never use
infinity-infinity.com
infinity-infinity.com
Turns out, it's slightly complex. It has to do with moon cycles.
After wigging out a little about this task, an afterthought that should've been easy, I googled for the specific formula so I could begin to express it in code. (I had already done a 20, 30 minute search for an existing PHP Class to handle all dates and was unsuccessful.)
What I found next nearly blew my mind. http://php.net/manual/en/function.easter-date.php
This at once delighted and disgusted me. A perfect example of the utility AND horror of PHP's large standard library.
And you think this is inferior to other languages where you would have to write that yourself or pick one of dozens of unofficial implementations with bugs unknown to you?
One could blame PHP for not having namespaces, but certainly not for providing official implementations for often-used pieces of functionality (though in case of easter_date? How many functions with different functionality do you come up with that you would like to give the same name?)
(edit: I'm not trying to troll here. OP has said he was "disgusted" by the presence of easter_date and from that I was inferring that he would prefer PHP not to have easter_date, thus my assertion of PHP being "inferior" to other languages that lack easter_date. By no means did I want to sound rude just a bit cynical maybe. I apologize for that.)
Inferior? I never said it was inferior. Seems you're arguing against somebody, but not me.
If one is disgusted by one thing and not by another, it's IMHO save to assume that the non-disgusting one is superior to the disgusting one.
If I have misunderstood you, I apologize.
I'm far more fluent in PHP than your average PHP developer. Where I work we face real problems of scale and use PHP effectively.
And even with all this, after years of developing in PHP (among other languages), I happen to just stumble across random functions.
In a structured library (like, say, .Net) I'd know to look in a specific place for a certain type of functionality, and if it's supported it's going to be there.
There is absolutely no benefit to a large corpus of functions being included in the language core like that. All of your arguments--about officially sanctioned solutions with known quality control--would be satisfied just as well by an official, structured library shipped alongside, but not inside, the language core.
I think it's not much secure to rely on php core for security. If you want security you add tests, even php core developers are humans.
"bloat" is not always bad (well. bloat is. but a big library isn't necessarily what I'd call bloated).
If you want to talk about bad parts in PHP, I could name a ton, but a huge base library isn't one of them.
Bad parts are:
- too much focus in backwards compatibility. A py3k like cut between php 4 and 5 would have done wonders and would not have made the adoption much slower (which was still very slow despite the more or less given backwards compatibility).
- wordy, inflexible syntax
- trying too hard to be like java while not being like java.
- inconsistencies in the base library (parameter order)
- very, very WTFy type conversion (IMHO the worst part of PHP)
But having a big base library is not what I would ever be disgusted with.
I think including things like that in the core is particularly poor practice.
Then, setlocale() alters how certain library functions work. *printf() for example uses the number formatting settings of the current locale. If the libraries you are using are not aware of locale settings, they might fail in interesting ways once you set the locale to something that uses, say, a comma as the decimal separator.
And last but not least, if you change your language file, you will have to restart the web server which generally isn't needed with PHP otherwise.
Wordpress has actually reimplemented portions of gettext so it works with the .mo files, but it doesn't alter the locale of the web server process.
And for regional formatting of numbers and dates, we got the intl extension with 5.3 which does just that, also not interfering with the web server process, other libraries and PHP itself.
We paid, and surprisingly didn't choose to ask for any more work from that particular coder ;)
I like the example of sys_getloadavg(), but am unsure if I'd ever use it...
metaphone() is a great tip too. I've only used soundex() in MySQL, will be interesting to see how they compare.
sys_getloadavg()
Is a new one for me. And actually really awesome because I can integrate it into a current project!!
i guess the author should try step into 2004 and php5...