+ -
当前位置:首页 → 问答吧 → 关于php对象的问题

关于php对象的问题

时间:2011-08-25

来源:互联网

class A
{
    function foo()
    {
        if (isset($this)) {
            echo '$this is defined (';
            echo get_class($this);
            echo ")\n";
        } else {
            echo "\$this is not defined.\n";
        }
    }
}

class B
{
    function bar()
    {
        A::foo();
    }
}

A::foo();
$b = new B();
$b->bar();

输出结果是
$this is not defined. $this is defined (B)
谁能帮我解释下啊

作者: turn   发布时间: 2011-08-25

有爱的大湿。都去泡夜色了吗?快来给偶解决下啊!!!!!!!!!!!!

作者: turn   发布时间: 2011-08-25

$this变量不存在  isset是判断变量存不存在

作者: 007gddk   发布时间: 2011-08-25

后面那个$this是怎么来的,我没有实例化A啊

作者: turn   发布时间: 2011-08-25

A类中的foo你当作静态函数用了,试验了一下,如果你在foo函数前加上public static,返回结果就合乎逻辑了。
这和PHP的对象无关系,只与PHP的类的函数定义有关系。

作者: jesuiszing   发布时间: 2011-08-25

看了下手册,原来这个就是手册中的例子啊。。。
PHP中类的函数定义如果不加任何修饰,敢情是可以对象和类都可以调用的。。。这样就没啥奇怪的

$this is not defined,这句是你用A::foo()调用时的返回值,此时没有对象,反馈正常。
$this is defined (B),这句是你用$b->bar();调用时的返回值,此时是用B产生的对象调用A类中的foo函数,反馈正常。没啥奇怪的啊。

作者: jesuiszing   发布时间: 2011-08-25

LS证解

作者: iminto   发布时间: 2011-08-25