php的静态变量和静态方法2016-10-08guaitu
静态变量也称为类变量,静态方法也称为类方法.
简单的说,静态变量就是所有对象都共享的变量。静态变量也称为类变量,静态方法也称为类方法。
如何定义静态变量
访问修饰符 static 变量名;
如何访问静态变量:
(1)
在类外部:类名::$类变量名(2)
在类内部:self::$类变量名或者::$类变量名例:一群小孩在玩游戏,不时有新的小孩加入游戏。问:如何知道现在有多少小孩在玩游戏,用面向对象的思想来实现。
静态变量与变通变量的区别:
(1)加上static称为静态变量或者类变量,否则称为实例变量;(2)类变量是与类相关的,公共的属性;(3)实例变量属于每个对象个体的属性;(4)类变量可以通过 类名::类变量名 这种形式直接访问。
方式一:使用全局变量
什么是全局变量?在程序的任何位置都可以使用的变量,称为全局变量。
<?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."加入游戏了"."<br />";
}
//创建三个小孩
}
$child1=new Child("www.bianceng.cn");
$child1->join_game();
$child2=new Child("李四");
$child2->join_game();
$child3=new Child("王二");
$child3->join_game();
//看有多少人玩游戏
echo "<br /> 有".$global_nums."人玩游戏";
?>
方式二:使用静态变量
<?php
class Child{
public $name;
public static $nums=0; //定义静态变量
function __construct($name){
$this->name=$name;
}
public function join_game(){
self::$nums+=1;
echo $this->name."加入游戏了"."<br />";
}
//创建三个小孩
}
$child1=new Child("www.bianceng.cn");
$child1->join_game();
$child2=new Child("李四");
$child2->join_game();
$child3=new Child("王二");
$child3->join_game();
//看有多少人玩游戏
echo "<br /> 有".Child::$nums."人玩游戏";
?>
php静态方法
静态方法也叫类方法,静态方法是属于所有对象实例的,形式如下:
访问修饰符 static 方法名(){
语句;
}当我们操作静态变量时,可以考虑使用静态方法注意:类方法中不能访问非静态属性(变量);普通方法既可以访问静态变量,也可以访问非静态变量。
类方法的使用:
在类外部:
类名::类方法名 或者 对象名->类方法名;
在类内部:
self::类方法名 或者 类名:类方法名
例:统计学费的总和
<?php
class Student{
public static $fee=0;
public $name;
//构造函数
function __construct($name){
$this->name=$name;
}
//入学
public static function enterSchool($ifee){
self::$fee+=$ifee;
}
//获取总学费
public static function getFee(){
return self::$fee;
}
}
//创建学生
$stu1=new Student("张三");
//通过类名来调用静态方法
Student::enterSchool(340); // 等价于$stu1->enterSchool(340);
$stu2=new Student("李四");
$stu2->enterSchool(600);
echo "总学费是:".Student::getFee();
?>
URL:http://www.bianceng.cn/webkf/PHP/201610/50459.htm