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

相关文章