陈力:传智播客古代 珍宝币 泡泡龙游戏开发第33讲:PHP 静态变量、静态方法


陈力:传智播客古代 珍宝币 泡泡龙游戏开发第33讲:PHP 静态变量、静态方法


 前节介绍了构造方法__construct()和析构方法__destruct的作用,介绍了this和垃圾回收等机制。本节介绍PHP静态变量和静态方法的相关内容。贵阳网站建设的朋友必须要掌握这些知识。本节内容为陈力:传智播客古代 珍宝币 泡泡龙游戏开发第33讲:PHP 静态变量、静态方法

一、静态变量
    提出问题:有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决。
传统的方法是使用全局变量(全局变量是在程序中都可以使用的变量)进行解决。
例子:
<?php
 //定义完游戏的全局变量
 global $global_nums;
 $global_nums=0; //赋值
 class Child{
  public $name;
  function __construct($name){
   $this->name=$name;
  }
  public function join_game(){
   global $global_nums; //声明使用全局变量
   $global_nums+=1; 
   echo $this->name."加入堆雪人游戏"; 
  }
 }
 $child1=new Child("张三");//创建三个小孩
 $child1->join_game();
 $child2=new Child("张五");
 $child2->join_game();
 $child3=new Child("王五");
 $child3->join_game();
 echo "<br/> 有".$global_nums; //看看有多少人玩游戏
?>

    使用静态变量来解决,静态变量和全局变量没有本质的区别,只是静态变量只在类中访问。在类中定义静态变量,格式为:[访问修饰符] static $变量名;
访问静态变量:
(1)如果在类中访问  有两种方法 self::$静态变量名,类名::$静态变量名。
(2)如果在类外访问:  有一种方法 类名::$静态变量名

 静态变量存在方式

解法:
class Child{
  public $name;
  //定义并初始化一个静态变量 $nums
  public static $nums=0;
  function __construct($name){
   $this->name=$name;
  }
  public function join_game(){
   //self::$nums 使用静态变量
   self::$nums+=1;
   echo $this->name."加入堆雪人游戏"; 
  }
 }
 $child1=new Child("张三");//创建三个小孩
 $child1->join_game();
 $child2=new Child("五五");
 $child2->join_game();
 $child3=new Child("王王");
 $child3->join_game();
 echo "<br/> 有这".Child::$nums; //看看有多少人玩游戏

静态变量与普通变量区别:
   (1)  加上static称为类变量或静态变量,否则称为实例变量。
   (2)  类变量是与类相关的,公共的属性。
   (3)  实例变量属于每个对象个体的属性。
   (4)  类变量可以通过 类名::类变量名 直接访问。

二、静态方法
  静态方法也叫类方法,静态方法是属于所有对象实例的,其形式如下:
  访问修饰符 static 方法名(){} 
  注意:类方法中不能访问非静态属性(变量)。 
   在类外部:  类名::类方法名 或者 对象名->类方法名
   在类内部:    self::类方法名 或者 类名::类方法名 
   请大家看一个小案例。(统计学费总和) [static3.php]
当我们操作静态变量的时候,我们可以考虑使用静态方法,比如统计所有学生交的学费。
在贵阳网站建设编程中,我们往往使用静态方法去操作静态变量。
静态方法的特点:静态方法去操作静态变量,静态方法不能操作非静态变量。
普通的成员方法既可以操作非静态变量,也可以操作静态变量。
什么时候需要用静态方法(类方法):
     案例:定义学生类,统计学生共交多少钱?
     ■  静态方法属于与类相关的,公共的方法
     ■  实例方法属于每个对象个体的方法
     ■  静态方法可以通过类名::类方法名直接访问

【推荐阅读】
软件设计和网站建设策略分析
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第33讲:PHP 静态变量、静态方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值