PHP的static,静态变量和静态方法调用方案

定义一个静态变量或方法:

static public $b = 1;

public static function b()
{
    echo "Hello Work"; 
}
首先明白,static静态的定义,它是属于一个类中的东西,不属于一个对象的东西

所以:

  1. 定义为static,是为了在类内部使用。在类的外部,比如实例化或继承都是不可调用的。
  2. 类的静态方法可以被网页访问
  3. 在类的内部,调用静态变量或方法,不能用$this调用,而是用self::[$变量名]/[方法名]调用

在非静态方法中

//初不初始化值随便
    public $a = 1;//非静态变量
    static public $b = 1;//静态变量

    //非静态方法
    public function a()
    {
        $this->a;//调用非静态变量
        $this->d();//调用非静态方法
        self::$b;//调用静态变量
        self::b();//调用静态方法
        echo "Hello Work";
    }

在静态方法内

  1. 可以用self::调用静态变量或方法
  2. 不能使用$this调用非静态变量或方法
  3. 不可以用self::调用非静态变量
  4. 可以用self::调用非静态方法
//初不初始化值随便
    public $a = 1;//非静态变量
    static public $b = 1;//静态变量

    //非静态方法
    public function a()
    {
        $this->a;//调用非静态变量
        $this->d();//调用非静态方法
        self::$b;//调用静态变量
        self::b();//调用静态方法
        echo "Hello Work";
    }
    //静态方法
    public static function b()
    {
        self::$b;//调用静态变量
        self::c();//调用静态方法
        //不能用$this调用非静态变量或方法
//        $this->a;
//        $this->d();

//        self::$a;//不能用self调用非静态变量
        self::d();//静态方法内调用非静态方法,但会有警告
        echo "Hi Work";
    }

    //静态方法
    public static function c()
    {
        echo "Hey Work";
    }
    //非静态方法
    public function d()
    {
        echo "end Work";
    }
    //静态方法
    public function e()
    {
        $this->d();//d()被self::调用后没有变为静态方法
        echo "begin Work";
    }

猜你喜欢

转载自blog.csdn.net/qq_41912505/article/details/88293838