Things You Probably Didn’t Know About PHP
devtheweb.net
devtheweb.net
1. You can gzip strings before storing them in a DB
But many modern Databases/Filesystems have the built in ability to achieve the same effect - but faster and more transparently.
2. Verify an email’s host address is a valid DNS record.
True, you can. But what's the point? I see two possibilities - either you want to guarantee an address is legit or you don't. If you want a guarantee this doesn't get you anything (you'll still have to send a confirmation email). If you don't care, then what's the point (someone has to type joe@aol.com instead of joe@klasjfklashf.com?). And (as a more minor concern) at sufficient scale, it could cause performance problems. I remember some webserver used to reverse-lookup IPs so it could log hostnames in its access log, and it was brought to its knees by even minimal levels of traffic).
rudimentary "junk" detection. I've used it in the past as a basic scheme to reject certain types of bots on a PHPBB forum.
The goal should just be to identify common typos (comma instead of dot). There's only one way to see if an email address is real.
Should this function really be used for email validation?
5. Easily unpack numeric arrays using the well-know function list <snip> Have you ever seen better code for swapping two variables’ values !?
Yes, try Python: a, b = b, a
If you include a file with their include() function and have whitespace after the closing ?> tag in the file--PHP will throw an error.
Except it gets better: whether this happens or not depends on a setting in php.ini (output buffering I think).
This happens if you're trying to send header information from the parent file but include a file that outputs whitespace on accident. The output buffering delays sending the output (because it's buffered, duh :)) so the header info can be sent, hence no error.
This is one of those things I didn't know and wish I did.
http://stackoverflow.com/questions/1793482/php-error-cannot-...
The work around: omit the closing ?> tag from included files.
Disgusting is a bit strong though ;)
Actually yeah. Ways that people reading the code would recognize right away.
I'm not sure if that's intuitive for someone who codes in PHP, but if it belongs in a "PHP Tricks" article then it doesn't sound like the best way to do it.
>>> a = 'apple'
>>> b = 'banana'
>>> a, b = b, aI'm not a PHP programmer so maybe I just don't get it ... but why would you ever want to instantiate a class that doesn't exist?
This one seems to skirt that.
One change I would make is to use the very effective Filter Input library to check an email address before you check it's DNS record. It would prevent a costly DNS hit if the email address is just gibberish.
Edit: For the criticism below (and unexplicable down-mods), take note that I didn't say this is a good list for new developers. I said this is a good list for developers new to PHP
Then number 1: what's the point of having a long string stored in the database if it's compressed? Either put it there so you can search with it or store it on the local filesystem.
5. Why on earth should we be encouraging people to write code like this?
6. The same point, and even the list's author doesn't know what's going on here. He's using variable variables, e.g.
$cow = "ermintrude"; $dog = "wuffles";
$animal = "cow";
echo $$animal; //outputs ermintrude echo ${"dog"}; //output wuffles
As I say, new developers don't need these features and shouldn't be using them. For that matter, I don't think any developer should be using the features I mention above: am I wrong?
If we took away every tool that can be misapplied and misused, we wouldn't have very many left.
This is a crude example, but imagine, eg, loading up a data model. Maybe it is lazy loaded, maybe cached, whatever, but you have an array with keys that match properties.
You could use a giant switch, a slew of if(isset()) code, or you could do something like this:
public function __construct($data = array()) {
foreach($data as $k => $v)
$this->{$k} = $v;
}
Obviously, this is POC stuff, in reality you'd want to put a 1-line check in there to ensure the $k is a valid property in that class.AFAIK, there's nothing you can do with variable variables that you can't do another way. But there are several things you can do much easier and more elegantly.
I get your argument. Programmers all over the place inherit sucky code from newbie developers. But there is no valid argument, IMO, to a language eliminating features because they can be misapplied.
PHP is often more visible because it is more used and easier to write... But if PHP wasn't that popular, we would see the same issue with Perl, Python, etc.
The point I wanted to emphasize is that by reading lists like these new users might think that this is a good way to write PHP, whereas I strongly disagree with this list existing in the first place.
There's also the slightly selfish point of view of not wanting to have to clean up code like this should I come across it in future ;)
Plus, did you ever read a PHP book? Most of them give bad examples and bad code practices too... I just read one that said to disable all apache logging (including error logging) for performance reasons.
"There are people who actually like programming. I don't understand why they like programming."
see also his other gems http://en.wikiquote.org/wiki/Rasmus_Lerdorf
PHP is far from my favorite language but "language wars" and comments like yours that lead to them are 100% brain dead. Void of original thought.
I see a little irony in people like you cursing PHP as unnecessary and ugly when you are spending your time spewing comments with those same traits.
Mark-Jason Dominus’s 1998 essay “Why it’s stupid to ‘use a variable as a variable name’” seems to be apropos here:
I didn't say this is a good list for new developers.
I said this is a good list for developers new to PHP.
I see a big difference there.
${‘a’ . ‘b’} = ‘c’;
echo $ab; // it will outputs c
I've seen people abuse that "feature" to write utterly unreadable messes of code that should have been covered in pasta sauce. Developers new to PHP should absolutely not be using this, not until they learn how to write clear, easy to read code.