PHP静态属性和方法详解

2023年11月30日09:59:24

介绍

在PHP类中,使用static关键字声明的属性和方法无法在->运算符的帮助下被其对象访问。实际上,不需要对象来访问任何类实例。类中静态项目的默认可见性是公开的

静态特性

要从外部类访问静态属性,我们需要使用范围解析运算符(::)和类名。评估类名称的字符串变量也可以提供静态属性

<?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

  • 更新时间:2023年11月30日09:59:24 ,共 1095 字。