php类的静态属性,php学习之类与对象的类的静态属性

静态变量定义

静态变量是当前类的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,也时同样被修改

定义静态变量

访问修饰符 static 静态属性名;

static 访问修饰符 静态属性名;

两种方式都可以

访问静态变量

在类的内部访问:有两种方式

self::静态属性名;

类名::$静态属性名;

657930183f1144be7864417a58bd10a1.png

在类的外部访问

如果是在类的外部访问今天属性,静态属性需要是public,否则也不能直接访问,访问的形式是   类名::$属性名

$thishe self 的区别

使用方式不同

self::

$this->

self是类的范畴指向类,$this是对象实例,指向对象实例

静态变量的使用注意事项

如果在类的内部去使用静态变量,有两种形式,self::$静态变量,   类名::$静态变量, 静态属性可以是public、protected、private

在类的外部访问静态属性时 只能是类名::$静态属性名,要求是public

静态变量可以在定义时,直接初始化,普通的成员属性也可以

需求:

玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏

优化前

//玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏

class Game{

public $name ;

public $num = 0;

public function __construct($name){

$this->name = $name;

}

public function playGame(){

echo $this->name.'
加入游戏';

global $num ;

$num++;

}

}

$play1 = new Game('张三');

$play2 = new Game('李四');

$play3 = new Game('王五');

$play4 = new Game('赵六');

$play1->playGame();

$play2->playGame();

$play3->playGame();

$play4->playGame();

echo '总共有' . $num .'个人加入游戏';

?>

e772f9adb1d205e4d9d341163e5c4fa1.png

对代码进行优化!

静态变量:静态变量是属于所有对象,因此可以被所有的对象共享‘

//玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏

class Game{

public $name ;

public static $num = 0;

public function __construct($name){

$this->name = $name;

}

public function playGame(){

echo $this->name.'
加入游戏';

//在类中调用静态变量的方法是self::变量名

self::$num++ ;

}

//定义个统计方法

public function count1(){

echo '总共有' . self::$num .'个人加入游戏';

}

}

$play1 = new Game('张三');

$play2 = new Game('李四');

$play3 = new Game('王五');

$play4 = new Game('赵六');

$play1->playGame();

$play2->playGame();

$play3->playGame();

$play4->playGame();

$play4->playGame();

$play4->count1();?>

c790d835d622898ab005d37bac4c95c2.png

静态方法内存图

00ba3fa46073ac68ada027da5c836c52.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值