空间/空间

PHP8+ WebAPI 清洁架构框架。

安装: 10

依赖: 0

建议者: 0

安全: 0

星标: 3

关注者: 0

分支: 1

开放问题: 0

类型:项目

3.4.3 2023-11-11 00:00 UTC

This package is auto-updated.

Last update: 2024-09-11 16:47:43 UTC


README

多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、生成令牌、数据库连接等服务将放在这里。