views:

59

answers:

2

As a follow up to an earlier question I wonder if anyone knows why Magento templates all declare their variables with an underscore. Templates are .phtml files include-ed from Mage_Core_Block_Template::fetchView(), their local variables are disposed of by the end of the function and never become global.

So what's the point of an underscore?

+1  A: 

I think it's to respect ZF's naming convention:

http://framework.zend.com/manual/en/coding-standard.naming-conventions.html#coding-standard.naming-conventions.variables

For instance variables that are declared with the "private" or "protected" modifier, the first character of the variable name must be a single underscore. This is the only acceptable application of an underscore in a variable name. Member variables declared "public" should never start with an underscore.

david parloir
Although it's a good point I'm not yet convinced that is a valid reason. The template variables are neither "private" nor "protected" because they only exist in local scope. They are not instance variables at all.
clockworkgeek
+1  A: 

No certain answer here, but I believe it's just an internal magento team coding convention. I'm sure you're aware of the underscore prefix's history in programming in general. It's not too much of a stretch to think that

local variables used in a view script that are loosely coupled with an object are similar to private or protected variables

In other words, the underscore serves as a warning that

hey, the contents of this variable doesn't just belong to this view, it's owned by something else

Part of the problem is there's no "official" recommendations from Zend, or anyone else, what sort of naming conventions should be used in phtml files.

Alan Storm