ottophp/demo

该软件包最新版本(0.x-dev)没有可用的许可证信息。

0.x-dev 2022-01-10 15:50 UTC

This package is auto-updated.

Last update: 2024-09-10 22:03:44 UTC


README

先决条件

全局搜索并替换字符串 __PROJECT__,将其替换为项目的顶级命名空间。

应用程序服务

src/Domain/App/ 目录中创建应用程序服务类。使用 __invoke() 方法作为主方法。

__invoke() 方法应始终且仅返回一个域有效负载;参见 src/Domain/Payload.php

App::run() 方法是 __invoke() 主方法的包装,用于捕获域异常并将它们报告为错误。

操作和操作模板

您可以通过以下方式创建操作及其对应的模板:

php bin/otto-action.php {$VERB} {$PATH} {$DOMAIN}

  • {$VERB} 是 HTTP 动词;例如 GET
  • {$PATH} 是指向操作的 URL 路径,需要时包含动态占位符;例如 /user/{userId}
  • {$DOMAIN} 是域子类,例如 App\\User\\FetchUser

运行上述命令将在正确的位置创建操作(在这种情况下,src/Sapi/Http/Action/User/GetUser.php)并在正确的位置创建 HTML 模板(resources/responder/html/action/User/GetUser.php)。

然后您需要编辑新的操作类,为参数设置类型提示(如果有),并调整域调用以添加或修改任何所需的参数。

如果您认为基本的操作类模板不适合您的需求,请根据需要编辑 resources/action.tpl

其他模板

所有模板都在 resources/responder/{$FORMAT} 中,其中 {$FORMAT}htmljson

布局模板在 {$FORMAT}/layout/ 子目录中。对于 HTML,这些提供常见的站点包装显示。对于 JSON,这提供了最后的机会来操作将用于响应的模板变量。

状态模板在 {$FORMAT}/status/ 子目录中。这些用于存在域有效负载但未指定操作特定模板的情况。有效负载状态将确定使用哪个状态模板。

前端模板(用于呈现未捕获的 Throwables)在 {$FORMAT}/front/ 子目录中。前端模板以它们将要显示的 Throwable 类命名。如果特定的 Throwable 没有模板,Otto 将尝试其父类,然后是 它的 父类,依此类推,直到达到顶级父类(无论是 Exception 还是 Error)。

通常,您不应过度依赖前端模板来呈现 Throwable。相反,您应该让应用程序服务返回带有 ERROR 状态的有效负载对象,并且您的操作或状态模板应该适当地呈现这些错误。

摘要

总的来说,您的大部分工作 不应该 在操作中完成。