Archive for the ‘Ugly Implementation’ Category

Just when everything was making sense

Wednesday, January 20th, 2010

Okay, let’s say you managed to ensure that your program doesn’t exhaust the heap with anonymous functions, and that you understand the edge cases involved in function-type variables. There are still lots of ways for create_function to bite you in the glutes.

(more…)

Did you think I wouldn’t recognize this compromise

Saturday, January 16th, 2010

On Thursday, commenter Grumqa asked how PHP deals with the slow accumulation of functions if you call create_function.

It doesn’t.

(more…)

My purity you stole

Thursday, January 14th, 2010

Yesterday, I wrote about how $f() variable-function syntax works in PHP. While it is pretty bad, it’s also the groundwork for understanding the ways in which create_function is terrible.

No, I mean besides taking a string full of code as one of its arguments.

(more…)

I decided I was never coming down

Tuesday, January 12th, 2010

I’m still sick, so you get another easy target today. It’s trivially easy to kill the PHP interpreter, dead, without invoking any extensions or unusual language features:

1
2
3
4
5
6
7
8
9
< ?php
function recurse($n) {
    if ($n <= 0)
        return;
    return recurse($n - 1);
}
 
recurse(100000); /* You may need to adjust this upwards. */
?>

(more…)

I really don’t know what you mean

Monday, January 11th, 2010

It’s Monday, and I’m sick, so you get some low-hanging fruit today. The following snippet produces a syntax error in PHP:

1
2
3
4
5
6
7
< ?php
function monolithic_dimensions() {
    return array(1, 4, 9);
}
 
print monolithic_dimensions()[0]; // syntax error, unexpected '['
?>

(more…)

Let’s go dancing on the backs of the bruised

Sunday, January 10th, 2010

Remember the C++ idiom I mentioned yesterday? In PHP, it has some unique gotchas.

(more…)