应用程序结构

Spiral 框架对命名空间和目录结构不做强制要求,你可以根据自己的喜好和习惯来组织它们。

目录结构

目录结构可以通过内核类的 mapDirectories 方法来控制。默认状态下,所有的应用相关目录都按照以下模式基于 root 来计算:

目录
root用户指定
vendorroot/vendor
runtimeroot/runtime
cacheroot/runtime/cache
publicroot/public
approot/app
configapp/config
resourcesapp/resources

有些组件会定义它们自己的目录,例如:

组件目录
spiral/viewsviewsapp/views
spiral/translatorlocaleapp/locale
spiral/migrationsmigrationsapp/migrations

初始目录

你可以在你的 app.php 文件中,通过给 Appinit 方法传入参数来指定你的目录:

$app = \App\App::init([
    'root' => __DIR__
]);

比如我们要改变 runtime 目录的位置:

$app = \App\App::init([
    'root' => __DIR__, 
    'runtime' => sys_get_temp_dir()
]);

如果你在程序代码中要解析目录别名,可以使用 Spiral\Boot\DirectoriesInterface

function test(DirectoriesInterface $dirs)
{
    dump($dirs->get('app'));
    // <your root dir>/app/
}

还可以在全局 Ioc 作用域(配置文件、控制器、服务的代码中)下使用 directory 方法:

function test()
{
    dump(directory('app'));
    // <your root dir>/app/
}

命名空间

默认情况下,所有的应用程序框架(Web, CLI, GRPC)都使用 App 根命名空间指向 app/src 目录。你可以在 composer.json 文件中按自己的需求进行修改:

{
  "autoload": {
    "psr-4": {
      "App\\": "app/src/"
    }
  }
}
上一页
下一页