Welcome 微信登录

首页 / 网页编程 / PHP / php的静态变量和静态方法

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