我在搞乱新的Attributes
(又名“注释”)PHP
,我遇到了这个烦人的问题,Netbeans 12.2
它无法识别我的有效PHP 8.0
代码。我已经在我的本地机器上测试了它,也在这里:https ://sandbox.onlinephpfunctions.com/ 。
代码似乎编译得很好。其他PHP 8.0
功能也可以在 IDE 中工作(...嗯,它是相同的二进制文件)。我可以以某种方式修复或消除此错误吗?因为它将我的整个工作区标记为错误。
<?php
#[Routing('hello')]
class A {
public function __construct() {}
}
#[Routing('world')]
class B {
public function __construct() {}
}
class Route {
public function __construct(public string $name) {}
}
#[Attribute(Attribute::TARGET_CLASS)]
class Routing {
private static $routes = [];
public function __construct(public string $name) {
static::add(new Route($name));
}
private function add($route) {
static::$routes[] = $route;
}
public static function getRoutes() {
return static::$routes;
}
}
$rA = new ReflectionClass(A::class);
$rB = new ReflectionClass(B::class);
$attributeA = $rA->getAttributes()[0];
$attributeB = $rB->getAttributes()[0];
$a = $attributeA->newInstance();
$b = $attributeB->newInstance();
print_r($a);
print_r($b);
print_r($a::getRoutes());
我想这是一个错误。我可以使用旧语法,但这只是一种解决方法,以防我找不到解决方案。
问题:
我怎样才能摆脱这个错误消息,或者我的代码中是否缺少一些东西,应该在那里?