Home > Magento, PHP > Debugging Magento using Krumo

Debugging Magento using Krumo

September 10th, 2008

One of the problems I’m facing when working under the hood of the Magento CMS is determining the context of $this. If you are to do any advanced stuff with your template, besides layoyout changes, you need to get familiar with Magento’s objects (classes).

Let’s have a look at the /app/design/frontend/default/default/template/catalog/product/view.phtml file. If you open this file and do var_dump($this) your browser will return empty page after a short period of delay. Experienced users will open PHP error log and notice the error message caused by var_dump(). Error message:
PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 121374721 bytes)

Personally, I like using print_r() and var_dump(), mostly because so far I had no positive experience using fancy xdebug or any other debugger with systems like Magento. Why is PHP throwing errors then? If you google out the error PHP has thrown at you, you’ll see that PHP 5.2 has memory limit. Follow the link http://www.php.net/manual/en/ini.core.php#ini.memory-limit to see how and what exactly.

Google search gave me some useful results trying to solve my problems. I found Krumo at http://krumo.sourceforge.net/. It’s a PHP debugging tool, replacement for print_r() and var_dump(). After setting up Krumo and running it on Magento it gave me exactly what I wanted. It gave me the object type of the dumped file; in this case it gave me object type of $this.

If your using an IDE studio with code completion support like NuSphere PhpED, ZendStudio or NetBeans and you decide to do something like $this-> you won’t get any methods listed. I haven’t yet seen the IDE that can perform this kind of smart logic and figure out the context of $this by it self.

What you can do is use the information obtained by krumo::dump($this).

In order to use the Krumo at first place, we need to set it up to be used with Magento. After you download the Krumo, unarchive and copy it to some folder inside Magento root folder. I created /developer folder and copied all Krumo files to it.

Next you open the krumo.ini file and set the full path to Krumo folder (see the following image).

After setting up krumo.ini all you need to do is to include class.krumo.php into any file you wish to use it (see the following image).

Performing krumo::dump($this) on /app/design/frontend/default/default/template/catalog/product/view.phtml file will return object type, Mage_Catalog_Block_Product_View.

Now if you do

Mage_Catalog_Block_Product_View::

your’re IDE supporting code completion will give you a drop down of all the available methods (see the following image), let’s say canEmailToFriend();

Mage_Catalog_Block_Product_View::canEmailToFriend();

Now all you need to do is to replace  Mage_Catalog_Block_Product_View with $this like

$this->canEmailToFriend();

And your done.

All of this may look like “why do I need this“. What you need it a smart IDE, one that can figure out the context of $this by it self and call the methods accordingly. No IDE currently does that, if I’m not missing on something.

Krumo debugger tool has few other neat tricks in its sleeves.  It can retrieve a list of all the available classes, constants and so on (see the following image).

For now I see no better solution to retrieve the object context of $this across all those Magento files. Hope this was helpful for you.

Interesting? Share it!
  • Digg
  • del.icio.us
  • Google
  • Technorati
  • Facebook
  • TwitThis
  • description

Related articles

Magento, PHP ,