joomla 1.6:$ app对象如何打印出整个页面内容

时间:2011-10-19 16:48:30

标签: php joomla joomla1.5 joomla-extensions joomla1.6

我正在检查joomla 1.6 index.php,我在最后一行找到了以下代码

  

echo $ app;

这会打印整个页面内容。

我刚刚使用print_r()打印出此对象中的内容,我得到了以下详细信息

JSite Object
(
    [template:JSite:private] => stdClass Object
        (
            [id] => 6
            [home] => 1
            [template] => beez5
            [params] => JRegistry Object
                (
                    [data:protected] => stdClass Object
                        (
                            [wrapperSmall] => 53
                            [wrapperLarge] => 72
                            [logo] => images/sampledata/fruitshop/fruits.gif
                            [sitetitle] => Matuna Market 
                            [sitedescription] => Fruit Shop Sample Site
                            [navposition] => left
                            [html5] => 0
                        )

                )

        )

    [_language_filter:JSite:private] => 
    [_detect_browser:JSite:private] => 
    [_clientId:protected] => 0
    [_messageQueue:protected] => Array
        (
        )

    [_name:protected] => site
    [scope] => 
    [requestTime] => 2011-10-17 17:23
    [startTime] => 1318872200.5365
    [_errors:protected] => Array
        (
        )

)

所以echo $ app如何显示所有网站内容,它不包含对象中的任何HTML内容。

非常感谢

2 个答案:

答案 0 :(得分:5)

它在类中声明了魔术方法__toString()

如果在类中声明了此函数,则在将对象转换为字符串时将使用它的返回值。

简单示例:http://codepad.org/UmZUQA3v

答案 1 :(得分:3)

$app是一个对象,print_r以与echo不同的方式访问其值。调用echo时,它还会隐式调用magic __toString方法。已定义为在给定存储在对象内部的值的情况下,它返回带有页面内容的字符串。 print_r会为您提供这些值,但不会为__toString表示。