Magento $this

Heads up! This article was written over 13 years ago. While it may still be helpful, please verify any information, as my perspectives and practices may have evolved.

The infamous $this found in Magento templates is a concept that I’ve found baffles beginner Magento developers. Here’s to hoping I can provide a half-decent explanation as to what it is, and where it comes from.

The most important point you should take away from this is: all Magento templates have a corresponding block instance. The $this exposed to us is the block instance, as if we were inside a method of the object (We actually are! See Mage_Core_Block_Template::fetchView).

Blocks are PHP classes that are designed as a place to put all of your business logic, instead of your templates. Blocks are normally reusable classes. A great example of the reusability of certain classes is the Mage_Core_Block_Template and Mage_Page_Block_Html_Pager classes. The core/template block is the foundation of the template system, allowing us the ability to load .phtml files from our themes. The page/html_pager block provides generic methods for paginating collections, such as isLastPage().

If you’re ever in any doubt as to which block type the template is using, just call echo get_class($this). Remember, it’s an object. This gives you a great place to start when hunting down methods available to the template.