PHP 静态变量和静态方法

PHP静态变量
静态变量(也叫类变量)

静态的变量的基本用法
1.在类中定义静态变量形式:
[访问修饰符] static $变量名;
例;  //public static $nums=0;
2.如何访问静态变量
如果在类中访问  有两种方法    self::$静态变量名  ,  类名::$静态变量名
如果在类外访问: 有一种方法    类名::$静态变量名

例程:
提出一个问题:
说,有一群小孩在玩堆雪人,不时有新的小孩加入,
请问如何知道现在共有多少人在玩?请使用面向
对象的思想,编写程序解决

[php]  view plain  copy
  1. <?php  
  2. class Child  
  3. {  
  4.     public $name;  
  5.     //这里定义并初始化一个静态变量 $nums  
  6.     public static $nums=0;  
  7.     public static $i=1;  
  8.     //构造函数  
  9.     function __construct($name)  
  10.     {                        
  11.         $this->name=$name;  
  12.     }   
  13.     //静态方法  
  14.     public  function join_game()  
  15.     {  
  16.         //self::$nums 使用静态变量  
  17.         //self::$nums+=1;  或  
  18.         Child::$nums+=1;  
  19.         echo Child::$i.".".$this->name."加入堆雪人游戏!<br>";  
  20.         Child::$i++;  
  21.     }  
  22. }  
  23. //创建三个小孩  
  24. $child1=new Child("李逵");  
  25. $child1->join_game();  
  26. $child2=new Child("张飞");  
  27. $child2->join_game();  
  28. $child3=new Child("唐僧");  
  29. $child3->join_game();  
  30. $child4=new Child("八戒");  
  31. $child4->join_game();  
  32. //看看有多少人参加了游戏  
  33. echo "<br/> 共有--".child::$nums."--个人参加了游戏!";  
  34. ?>  


静态方法(又叫类方法)
其形式如下:
[访问修饰符] static  function 方法名(){}
例;  //public static function enter_school($ifree){}
需求: 当我们操作静态变量的时候,我们可以考虑使用静态方法,比如统计所有学生交的学费

在我们编程中,我们往往使用静态方法去操作静态变量.

使用静态方法不需要创建对象,可以直接访问该静态方法

2.如何访问静态方法:
如果在类中访问  有两种方法    self::静态方法名  ,  类名::静态方法名
如果在类外访问: 有两种方法    类名::静态方法名  ,  对象名->类方法名
静态方法的特点
1.静态方法只能操作静态变量
2.静态方法不能操作非静态变量.
这里请注意 : 普通的成员方法,既可以操作非静态变量,也可以操作静态变量 */

[php]  view plain  copy
  1. <?php  
  2. class student  
  3. {  
  4.     public $name;  
  5.     //这里定义并初始化一个静态变量 $nums  
  6.     public static $free=0;  
  7.     //public static $i=1;  
  8.     //构造函数  
  9.     function __construct($name,$ifree)  
  10.     {                        
  11.         $this->name=$name;  
  12.         echo "<br>";  
  13.         echo $this->name."入学了,要交学费:".$ifree."元<br>";  
  14.     }   
  15.     //静态方法,新生入学,上交学费  
  16.     public static function enter_school($ifree)  
  17.     {  
  18.         self::$free+=$ifree;      
  19.     }  
  20.     //获取学费  
  21.     public static function getfree()  
  22.     {  
  23.         return  self::$free;  
  24.     }     
  25. }  
  26. //静态方法不需要像普通成员方法一样要创建对象才可调用,可在不创建对象的情况下调用静态方法  
  27. //student::enter_school(10000);  
  28. //创建学生对象  
  29. $student1=new student("小明",1000);  
  30. //通过对象名调用静态方法  
  31. $student1->enter_school(1000);  
  32. //通过类名来调用静态方法  
  33. //student::enter_school(1000);  
  34. $student2=new student("小东",200);  
  35. $student2->enter_school(2000);  
  36. $student3=new student("小亮",3000);  
  37. $student3->enter_school(3000);  
  38.   
  39. echo "共收取学费".$student3->getfree()."元!<br>";  
  40. //echo "共收取学费".student::getfree()."元!<br>";  
  41. ?>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值