1

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

回声$应用程序;

这将打印整个页面内容。

我刚刚使用 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 内容。

非常感谢你

4

2 回答 2

5

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

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

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

于 2011-10-19T16:51:03.457 回答
3

$app是一个对象,并print_r以不同的方式访问它的值echo。当echo被调用时,它也隐式调用了魔法__toString方法。已经定义了它返回一个带有页面内容的字符串,给定存储在对象内部的值。print_r会给你这些价值观,但不是__toString代表。

于 2011-10-19T16:51:46.647 回答