是否可以在同一个命名空间下的同一个文件中使用多个 类

Is it possible use multiple classes under the same namespace, in the same file

是否可以在同一个命名空间下的同一个文件中使用多个 classes?我想做这样的事情:

<?php
  namespace MyNamespace\Helpers\Exceptions

  use Exception;

  class CustomException1 extends Exception{}

  class CustomException2 extends Exception{}

  class CustomException3 extends Exception{}

避免为每个自定义异常使用一个文件class。 问题是,当我尝试在另一个 class 中使用自定义异常之一时,

use MyNamespace\Helpers\Exceptions\CustomException1;

未找到 CustomException1 class。有什么想法吗?

我认为这样做在语法上没有任何错误,但我认为任何 PSR-4 兼容的 auotloader 都无法找到不在其专用的 class文件,因为标准是 class 所属文件的名称与 class 本身的名称相同:

  1. The terminating class name corresponds to a file name ending in .php. The file name MUST match the case of the terminating class name.

因此,如果您想使用这种方法,则必须确保 include 手动 class 文件,只要您需要定义那些 classes (基本上,任何时候你想抛出/捕捉任何这些异常)。

另一种方法是在另一个 class 文件中定义您想要的 classes,您绝对确定 将始终先自动加载对任何 new CustomExceptionN 语句的任何调用。您可能会发现在大多数情况下,尝试记住在使用 Class2 之前首先确保自动加载 Class1 比仅遵循标准并包含每个 [=24] 要麻烦得多=] 在它自己的文件中,位于正确的命名空间路径中。