• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php未实例化类调用方法的问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
/**
 * 双冒号操作符其意义应该是不实例化类而调用类中的方法或者成员等
 *
 */
class man1
{
    public function show()
    {
        echo "Hello World!";
    }
}
//由于show方法中没有this,所以不出错
man1::show();

class man2
{
    public static $a = 1;
    public function show()
    {
        self::$a;
        echo "Hello World!";
    }
}
//由于show方法中没有this,所以不出错
man2::show();

class man3
{
    public $a = 1;
    public static function show()
    {
        echo $this->a;
        echo "Hello World!";
    }
}
//这种是犯错的,static 方法里面不可以用this
$p = new man3();
$p->show();

注意下面这种写法:

class a
{
    public function show()
    {
        print_r($this);
        echo $this->str;
    }
}
class b
{
    public $str = "Hello World!";
    public function test()
    {
        a::show();
    }
}
/**
 *此处程序运行的结果是输出”Hello World!”
 *因为$this是指向当前类实例化的一个对象,其作用范围为当前对象的上下文
 *而此处A::show()中的$this其实是指向B类实例化的对象 ,而且正在对象上下文中,所以能够输出B中的变量$str的值
 */
$test = new B();
$test->test();

看这种写法:

//自我感觉这个这种写法太绕了,最好不要用
class man1{
    public function run()
    {
        print_r($this);//man2
        $this->say();//由于this为man2实例化的对象,故可以调用man2类中的say方法
        echo 'running';
    }
}

class man2 extends man1{
    public function say()
    {
        echo 'saying';        
    }
}

$p = new man2();
$p->run();

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap