我最近遇到了一件困扰我在Symfony中注解的小事(不确定它是否也是纯PHP的事情)。新布线注解如下所示:#[Route('route', name: 'route_name')]当我想要@throws的相同类型的注解时,我找不到任何方法来代替看起来像这样的旧类型:
#[Route('route', name: 'route_name')]
@throws
/** * @throws Exception */
因此,我需要新类型的注解,即使是@throws
xienkqul1#
属性背后的主要思想是将静态元数据附加到代码中(方法、属性等)。这些元数据通常包含“配置”等概念。在您的示例中,这个属性为您的框架设置了一条路线。使用doctrine,您可以设置您的实体。几年前,没有属性,所以开发人员使用注解来声明它们。PHP 8允许我们使用属性。让我们避免使用注解(@Route)。Throw标记不会在您的应用程序中设定任何项目。例外状况只能由您的程式码掷回。
/** * @throws Exception //this line has no impact on your code */ #[Route('route', name: 'route_name')] //this line has an impact by setting up your routes public myAction() { throw new Exception('foo'); // This line have an impact on your code }
这是开发人员(和有价值的IDE)的信息,帮助我们理解代码。因此,没有@Throw标记的 * 属性版本 *。@Throw标记“仅”是一个文档、一个PHPDoc、一个注解:)您的代码应该在注解和属性中混合注解
1条答案
按热度按时间xienkqul1#
属性背后的主要思想是将静态元数据附加到代码中(方法、属性等)。这些元数据通常包含“配置”等概念。在您的示例中,这个属性为您的框架设置了一条路线。使用doctrine,您可以设置您的实体。几年前,没有属性,所以开发人员使用注解来声明它们。PHP 8允许我们使用属性。让我们避免使用注解(@Route)。
Throw标记不会在您的应用程序中设定任何项目。例外状况只能由您的程式码掷回。
这是开发人员(和有价值的IDE)的信息,帮助我们理解代码。因此,没有@Throw标记的 * 属性版本 *。@Throw标记“仅”是一个文档、一个PHPDoc、一个注解:)您的代码应该在注解和属性中混合注解