• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
哎,香~ 真香~~
博客园    首页    新随笔    联系   管理    订阅  订阅

【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  

 

 

 

 

posted @ 2019-12-13 00:06  尼玛的你哪位  阅读(243)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3