Dan Lugg
Dan Lugg

Reputation: 20592

Identical function and class names in PHP

Are there any circumstances where identically named classes and functions in PHP, could collide or cause problems in any way? For example:

function Foobar(){
    // ...
}

class Foobar{
    // ...
}

Cursory testing shows that PHP can discern between them based on context.

Upvotes: 0

Views: 194

Answers (1)

phant0m
phant0m

Reputation: 16905

No, they never collide. But:

Do not do it.

You will confuse everyone if you do so, because I would not expect there to be a function and a class of the same name. Many don't even know it's legal to do so.

When I see an upper case name In PHP (first letter), I assume it is a class. If you put () around it, I will know it's a function. But I wouldn't assume that there is a class of the same name. All you do is confuse people. Some might assume: "Cool, I didn't know you could omit new". I don't know what your intents are, but if it's to get rid of the new keyword - and only that - it's very bad. I will assume you do more than just that, and will go check what that function actually does, and I'll get angry if I find out it does nothing except returning a new instance without doing anything... I just wasted my time looking up a function that does... nothing.

Upvotes: 5

Related Questions