diff --git a/include/class.variable.php b/include/class.variable.php
index 32704a909081e8076e71b5a82b29beb8e4bb9aa9..233c9fc18696886460991b35bf3dba18701762cc 100644
--- a/include/class.variable.php
+++ b/include/class.variable.php
@@ -63,8 +63,12 @@ class VariableReplacer {
 
         if(!$obj) return "";
 
-        if (!$var && method_exists($obj, 'asVar')) //XXX: to_string?
-            return call_user_func(array($obj, 'asVar'));
+        if (!$var) {
+            if (method_exists($obj, 'asVar'))
+                return call_user_func(array($obj, 'asVar'));
+            elseif (method_exists($obj, '__toString'))
+                return (string) $obj;
+        }
 
         list($v, $part) = explode('.', $var, 2);
         if ($v && is_callable(array($obj, 'get'.ucfirst($v)))) {