PHP 静态属性和方法
phpserver side programmingprogramming更新于 2025/8/19 18:37:17
简介
在 PHP 类中,使用 static 关键字声明的属性和方法无法通过 -> 运算符在其对象中访问。实际上,对象无需访问类的任何实例。类中静态项的默认可见性为 public
静态属性
要从类外部访问静态属性,我们需要使用作用域解析运算符 (::) 以及类名。取值为类名的字符串变量也可以提供给静态属性
<?php
class testclass{
static $name="test";
}
echo testclass::$name;
$var="testclass";
echo $var::$name;
?>
要在同一类的任何方法中使用静态属性,请使用 self 关键字代替用于访问实例属性的 -> 运算符。
<?php
class testclass{
static $name="test";
public function test(){
echo self::$name;
}
}
$obj=new testclass();
$obj->test();
?>
任何在父类中声明的静态属性都可以在子类方法中引用,方法是使用 parent 关键字以及作用域解析运算符。
<?php
class testclass{
static $name="test";
public function test(){
echo self::$name;
}
}
class myclass extends testclass{
public function mytest(){
echo parent::$name;
}
}
$obj=new myclass();
$obj->mytest();
?>
静态方法
当方法声明为静态时,伪变量 $this 对其不可用。因此,类的实例属性无法在其中访问。静态方法通过类名以及作用域解析运算符调用。
在以下示例中,类具有一个静态属性 $count,该属性在每次执行构造函数时(即对于每个对象)都会递增。在类内部,有一个静态函数用于检索静态属性的值。
示例
<?php
class testclass{
static $count=0;
function __construct(){
self::$count++;
}
static function showcount(){
echo "count = " . self::$count;
}
}
$a=new testclass();
$b=new testclass();
$c=new testclass();
testclass::showcount();
?>
输出
这将产生以下输出 −
count = 3

