为什么使用 [ ] 符号将元素输入到静态数组

why [ ] notation is used to input element to static array

在原始示例中 $methods 是静态的 array.It 用于将外部函数作为方法分配给 class.But 以向该数组输入新元素 writer 使用以下表达式

static protected $methods = array();

我从变量声明中删除了 static 关键字并尝试执行代码。

protected  $methods = array();

执行报错如下:

Fatal error: Access to undeclared static property: Dynamic::$methods in C:\xampp\htdocs\practice\json.php on line 6

这个 [ ] 符号的用途是什么,它与 static 关键字有什么关系??

原始完整代码:

class Dynamic {
  static protected $methods = array();

  public static function registerMethod($method) {
    self::$methods[] = $method;
  }

  private function __call($method, $args) {
    if (in_array($method, self::$methods)) {
      return call_user_func_array($method, $args);
    }
  }
}

function test() {
  print "Hello World" . PHP_EOL;
}

Dynamic::registerMethod('test');
$d = new Dynamic();
$d->test();

what is this [ ] notation is used for and how it is related to static keyword??

static[] 的使用无关。

代码 $array[] = $i 是一个 shorthand,用于将元素 $i 推到数组 $array 的末尾。也可以写成array_push($array, $i).