PHP – 静态属性



PHP 中的“static”关键字用于在 PHP 类中定义静态属性和静态方法。需要注意的是,static 关键字也用于定义静态变量和静态匿名函数。阅读本章以了解 PHP 类中的静态属性。

在类定义中,使用 static 限定符声明的变量成为其静态属性。static 关键字可以出现在访问修饰符之前或之后。

static private $var1;
public static $var2;

如果要使用类型提示,则类型不能位于 static 关键字之前。

static private string $var1;
public static float $var2;

类中静态属性的值不能通过其对象(使用 -> 运算符)访问。这样做会导致一条通知,指出 以非静态方式访问静态属性 myclass::$var1。相反,静态属性是使用作用域解析运算符(由“::”符号表示)访问的。

示例

查看以下示例 -

<?php
   class myclass {
      static string $var1 = "My Class";
      function __construct() {
         echo "New object declared" . PHP_EOL;
      }
   }
   $obj = new myclass;
   echo "accessing static property with scope resolution operator: " . myclass::$var1 . PHP_EOL;
   echo "accessing static property with -> operator: ". $obj->var1 . PHP_EOL;
?>

它将产生以下 输出 -

New object declared
accessing static property with scope resolution operator: My Class
PHP Notice:  Accessing static property myclass::$var1 as non static in hello.php on line 14

“self” 关键字

要从方法内部访问静态属性,请使用 self 关键字引用当前类。在下面的示例中,类具有一个整数静态属性,每次声明新对象时都会递增。

<?php
   class myclass {
   
      /* Member variables */
      static int $var1 = 0;
      function __construct(){
         self::$var1++;
         echo "object number ". self::$var1 . PHP_EOL;
      }
   }
   for ($i=1; $i<=3; $i++) {
      $obj = new myclass;
   }
?>

它将产生以下 输出 -

object number 1
object number 2
object number 3

“parent” 关键字

基类的静态属性可以通过在继承类的函数内部引用基类(使用 parent 关键字)来使用。您需要使用“parent::static_property”语法。

示例

查看以下示例 -

<?php
   class myclass {
   
      /* Member variables */
      static int $var1 = 0;
      function __construct() {
         self::$var1++;
         echo "object number ". self::$var1 . PHP_EOL;
      }
   }

   class newclass extends myclass{
      function getstatic() {
         echo "Static property in parent class: " . parent::$var1 . PHP_EOL;
      }
   }
   $obj = new newclass;
   $obj->getstatic();
?>

它将产生以下 输出 -

object number 1
Static property in parent class: 1
广告

© . All rights reserved.