ottophp / demo
Requires
- ottophp/core: 0.x@dev
Requires (Dev)
- pds/skeleton: ^1.0
- phpunit/phpunit: ^9.0
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}
是 html
或 json
。
布局模板在 {$FORMAT}/layout/
子目录中。对于 HTML,这些提供常见的站点包装显示。对于 JSON,这提供了最后的机会来操作将用于响应的模板变量。
状态模板在 {$FORMAT}/status/
子目录中。这些用于存在域有效负载但未指定操作特定模板的情况。有效负载状态将确定使用哪个状态模板。
前端模板(用于呈现未捕获的 Throwables)在 {$FORMAT}/front/
子目录中。前端模板以它们将要显示的 Throwable 类命名。如果特定的 Throwable 没有模板,Otto 将尝试其父类,然后是 它的 父类,依此类推,直到达到顶级父类(无论是 Exception
还是 Error
)。
通常,您不应过度依赖前端模板来呈现 Throwable。相反,您应该让应用程序服务返回带有 ERROR
状态的有效负载对象,并且您的操作或状态模板应该适当地呈现这些错误。
摘要
总的来说,您的大部分工作 不应该 在操作中完成。