php关于static和self的一点理解

在使用和学习laravel的过程中,总会看到类似与static::methods 或者static::variable的使用方式,对此感觉到疑惑和不解,后来查阅了相关的资料才知道他是php5.3之后新加入的语法,叫做静态绑定。它可以在运行时,实时的跟当前的类挂钩,这么说可能有点不理解,还是直接上代码吧,看一下他跟self的区别。

<?php

class Fruit 
{
    public static function echoName()
    {
        echo "fruit".PHP_EOL;
    }

    public static function selfName()
    {
        self::echoName();
    }

    public static function staticName()
    {
        static::echoName();
    }
}

class Banana extends Fruit
{
    public static function echoName()
    {
        echo "banana".PHP_EOL;
    }
}

Banana::selfName();//fruit
Banana::staticName();//banana

查看输出之后,才知道差别,self主要是在那个类里面编写,就绑定的哪个类,但是static则不是,他是跟当前类绑在一起的,是你用哪个类就调用哪个类的方法。

posted @ 2017-08-05 23:03  秦至臻  阅读(245)  评论(0编辑  收藏  举报