在文件和命名空间中组织代码

在 php 中, 您可以将代码放置在任何文件中, 而不需要特定的结构。 在 Zephir中, 每个文件都必须包含一个类 (并且只有一个类)。 每个类都必须有一个命名空间, 并且目录结构必须与所使用的类和命名空间的名称相匹配。 (这类似于 psr-4 自动加载约定, 只是它是由语言本身强制执行的。

例如, 给定以下结构, 每个文件中的类必须是:

  1. mylibrary/
  2. router/
  3. exception.zep #
  4. router.zep # MyLibrary\Router

Class in mylibrary/router.zep:

  1. namespace MyLibrary;
  2. class Router
  3. {
  4. }

Class in mylibrary/router/exception.zep:

  1. namespace MyLibrary\Router;
  2. class Exception extends \Exception
  3. {
  4. }

如果文件或类不在预期文件中, 则 Zephir 将引发编译器异常, 反之亦然。