【php基础】静态与非静态变量、方法

静态的变量或者是函数是保存的静态内存中的,只有到程序结束时才会被释放,那他是什么时候赋值的呢

如果类中调用一次,静态类在编译的时候需要多做工作,动态类在执行的时候需要多做工作,然而php是动态语言,每一次这两步都不掉,所以对于只运行一次的类,无所谓谁快谁慢。

但是如果一个类在程序当中要多次调用就不一样了,静态类是编译的时候就赋值了,程序之后的运行都可以直接调用过来,而不用动态的分配内存了,就节约了时间,这就是为什么静态类比动态类快的原因(前提是调用多次记得)。

class A
{

  public static $a;

  public $b;

  public function __construct($a=1,$b=2)
  {
    self::$a = $a;
    $this->$b = $b;
  }

  public static function func_static()
  {
    echo 'func_static'.PHP_EOL;

    echo $this->b;//报错,不能使用$this关键字,不能调用

    echo self::$a//正常

  }

  public function func()
  {
    echo 'func'.PHP_EOL;

  }  

}

A::func_static();//正常

A::func()//报错

$obj = new A();

$obj ->func();//正常

总结:

  1.静态声明使用 static 关键字

  2.调用静态变量或静态方法不需要实例化类 

  3.在类中调用静态变量使用 self :: 

  4.在静态方法中不能使用关键字 $this  

猜你喜欢

转载自www.cnblogs.com/baboben/p/12032611.html