空间 / 空间
PHP8+ WebAPI 清洁架构框架。
Requires
- php: ^8.2
- ext-json: *
- ext-sodium: *
- lcobucci/jwt: ^5
- spatial/core: ^3
- spatial/doctrine: ^3
- symfony/yaml: ^6
Requires (Dev)
- roave/security-advisories: dev-master
Suggests
- lcobucci/jwt: Generate Json Web Tokens for Authentication
This package is auto-updated.
Last update: 2024-09-11 16:47:43 UTC
README
- 文档: https://aiira.co/developer
- Twitter: https://twitter.com/aiira_co
多API框架的清洁/洋葱架构
- Spatial\Route 用于表示层(API)
- Spatial\Mediator 作为 \表示层\ 和 \核心\ 之间的中间件(PSR)
- Doctrine 用于数据库
- GuzzlePSR7 用于 http
- lcobucci/jwt 用于认证
服务器要求
Spatial 框架有一些系统要求。所有这些要求都由 Spatial docker-compose.yml 和 Dockerfile 满足,因此强烈建议您使用 Docker 作为您本地的 Spatial 开发环境。
但是,如果您不使用 Docker,您需要确保您的服务器满足以下要求
- PHP >= 8.0
- OpenSwoole 作为服务器
- BCMath PHP 扩展
- Ctype PHP 扩展
- Fileinfo PHP 扩展
- JSON PHP 扩展
- Mbstring PHP 扩展
- OpenSSL PHP 扩展
- PDO PHP 扩展
- Tokenizer PHP 扩展
- XML PHP 扩展
安装 Spatial
Spatial 使用 Composer 来管理其依赖项。因此,在开始使用 Spatial 之前,请确保您已经在您的机器上安装了 Composer。通过在终端中发出 Composer create-project 命令来安装 Spatial
composer create-project spatial/spatial webapi
配置
公共目录
安装 Spatial 后,您应该将您的 web 服务器文档 / 网络根目录配置为公共目录。该目录中的 index.php 用作所有进入您的 API 的 HTTP 请求的前端控制器。在那里,您将找到启动应用后配置的 swoole http 服务器
配置文件
Spatial 框架的所有配置文件都存储在 config 目录中。每个选项都有文档说明,因此您可以自由地查看文件,并熟悉您可用的选项。
目录权限
安装 Spatial 后,您可能需要配置一些权限。assets、common/domain 和 var/cache 目录内的目录应可由您的 web 服务器或 Spatial 写入。如果您使用的是 Homestead 虚拟机,这些权限应该已经设置好了。
使用秘密存储敏感信息
当您的应用程序具有敏感配置(如 API 密钥)时,您应通过 secrets(config/secrets/)安全地存储这些信息。假设您在本地开发环境中编码,这将创建
config/secrets/dev/dev.encrypt.public.php
用于加密/添加秘密到保险库。可以安全地提交。
config/secrets/dev/dev.decrypt.private.php
用于解密/读取保险库中的秘密。开发解密密钥可以提交(假设开发保险库中未存储高度敏感的秘密),但生产解密密钥决不应该提交。
其他配置
Spatial 几乎不需要其他配置即可使用。您可以自由地开始开发!但是,您可能希望查看 config/services.yaml 文件及其文档。它包含您可能希望根据您的应用程序更改的几个选项,例如时区和区域设置。
您还可能希望配置 Spatial 的几个其他组件,例如
- 缓存
- 数据库
- 会话
Web 服务器配置
目录配置
Spatial 应始终从为您的 web 服务器配置的“网络目录”的根目录提供服务。您不应尝试从“网络目录”的子目录中提供 Spatial 应用程序。这样做可能会暴露您的应用程序中的敏感文件。
使用默认目录结构
除非您的项目遵循一种强加特定目录结构的开发实践,否则请遵循默认的空间目录结构。它是扁平的、自解释的,并且与空间无关。
your_project/
├─ assets/
├─ bin/
│ └─ console
├─ config/
│ ├─ packages/
│ └─ services.yaml
└─ public/
│ ├─ build/
│ └─ index.php
├─ src/
│ ├─ common/
│ ├─ core/
│ ├─ presentaion/
│ ├─ infrastructure/
├─ templates/
├─ tests/
├─ var/
│ ├─ cache/
│ └─ log/
└─ vendor/
源目录
应用程序目录包含您应用程序的核心代码。我们很快将更详细地探讨这个目录;然而,您应用程序中几乎所有的类都将在这个目录中。
配置目录
正如其名所示,配置目录包含您应用程序的所有配置文件。阅读所有这些文件并熟悉所有可用的选项是个好主意。
数据库目录
数据库目录包含您的数据库迁移、模型生成器和种子。如果您愿意,您还可以使用此目录来存储SQLite数据库。
公共目录
公共目录包含index.php文件,这是所有进入您应用程序的请求的入口点,并配置自动加载。此目录还存放您的资产,如图像、JavaScript和CSS。
测试目录
测试目录包含您的自动化测试。提供了一个示例PHPUnit测试。每个测试类应以单词Test结尾。您可以使用phpunit或php vendor/bin/phpunit命令运行测试。
供应商目录
供应商目录包含您的Composer依赖项。
源目录
表示层目录
表示层层/文件夹包含为创建的每个应用程序创建的单独API。表示层API在config.php文件中注册以供访问。
公共目录
公共层/文件夹包含您的
- 常量,
- 通用函数,
- 异常,
- 库等,这些将在整个工作区中使用:因此这些与任何应用程序或API无关。
核心目录
核心层/文件夹包含您的应用程序(逻辑、接口、特质)及其域(实体)。
- 应用程序文件夹收集您的逻辑、接口和模型。
- 域文件夹收集使用Doctrine ORM生成的实体。
基础设施目录
基础设施层/文件夹包含服务和数据库连接。因此,像SMS、生成令牌、数据库连接等服务将放在这里。