PHP:关于静态的行为
首先
这篇文章是为了给编程初学者的备忘录而写的,希望能对其他初学者有所帮助。
这次在学习PHP的过程中,我对于static这个概念产生了一些疑问,所以进行了一番调查研究。如果有任何错误,请您指正。非常感谢。
static 的使用方法
通过声明 static ,属性或方法将属于类,并且可以在没有实例化的情况下使用。
换言之,你可以执行与实例状态无关的操作。这被称为实用方法,并用于执行明确约定的处理等。
请注意,在静态方法中无法使用$this。
如果给属性加上static的话。
固定配置于属性所属的类中。
当一个属性的归属类被固定时,这意味着可以从任何地方访问该属性,并且该属性存在于实例之间作为共享属性。
我想创建一个样本并确认其行为。
<?php
class StaticNum
{
//staticプロパティ
public static $stNum = 0;
//通常のプロパティ
public $num = 0;
//プロパティに引数の値を加算するメソッド
public function count(int $plus)
{
//staticプロパティに加算
self::$stNum += $plus;
//通常プロパティに加算
$this->num += $plus;
}
}
//StaticNumbersインスタンスを2つ作成
$staticA = new StaticNum();
$staticB = new StaticNum();
//Aのcount()を引数5で実行
$staticA->count(5);
//Aのプロパティを出力
echo "AのstNum:" . $staticA::$stNum. "num:" . $staticA->num;
//Bのcount()を引数10で実行
$staticB->count(10);
//Bのプロパティを出力
echo "BのstNum: " . $staticB::$stNum . "num:" . $staticB->num;
//実行結果
AのstNum: 5 num: 5
BのstNum: 15 num: 10
根据上述结果可以看出,如果按照正常逻辑创建实例并执行,分别给两个属性加上5和10,staticA属性应该有5的值,staticB属性应该有10的值。然而,通过使用public static $stNum = 0;这样的static关键字将其设置为静态属性,属性将属于类并且独立于实例拥有自己的值。
最终结果是,从实例角度看,属于类的属性($stNum)只有一个,所以只有$stNum是可加的,先加5后再加10,$stNum将持有值15。
我对它的使用场景一点也不清楚。
就静态方法而言,与普通方法相比,使用方式几乎没有太大区别…
我个人认为,通过将断言方法声明为静态,可以使测试对象在超出范围外进行重复使用。
如果您有关于如何正确使用static的知识或建议,如果方便的话,希望能在评论中给予教导。
请多多关照。
文献引用
PHP手册静态关键字是用来做什么的?