您的位置:首页 > 编程语言 > PHP开发

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

2015-07-23 17:39 537 查看
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第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 静态变量、静态方法

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: