umonkey / ufw1
基于slim的宠物项目网站框架
Requires
- php: >=5.5.0
- league/commonmark: 1.0.0
- league/commonmark-ext-table: ^2.1
- monolog/monolog: ^1.17
- phpmailer/phpmailer: ^6.1
- slim/php-view: ^2.0
- slim/slim: ^3.1
- twig/twig: ^2.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-29 05:18:36 UTC
README
这个项目包含了我经常在我的网站上重用的组件。它基于Slim Framework,因为它的代码清晰、简单且易于理解。
概念
使用ADR模式(行动-领域-响应器)。动作是轻量级的控制器,只有一个动作,没有逻辑:工作是将输入数据解析并传递给领域。领域是一个处理输入数据、执行工作(可能调用其他服务)并返回响应负载的服务。响应器根据内容和其他环境(XHR等)将负载渲染为实际的HTTP响应。这使得应用程序可以接受单元测试。
使用依赖注入,以Symfony服务命名。服务是按需加载的代码的独立部分。控制器通过名称从容器中提取参数。内置服务包括数据库、记录器、节点和文件工厂、S3、搜索引擎、词干提取器、任务队列、Telegram通知、Twig模板渲染器、缩略图生成器和维基引擎。
使用“节点”,单个内容块,如页面、投票、文章、论坛主题或博客条目。这受到Drupal的启发,工作良好,大大简化了文档管理。
使用任务队列进行后台任务执行。有一个独立的守护程序监视任务队列表并运行任务处理程序。这使得应用程序可以快速响应,将长时间任务卸载到队列工作程序并序列化任务。最佳用于上传文件到云端、发送邮件和其他通知。
使用存储库/实体模式来访问数据。实体目前只是围绕ArrayObject的包装,增强了一点。实体对存储一无所知,也不与其交互——这是存储库的作用(参见Nodes模块)。没有ORM,没有查询构建器——SQL是可移植的且足够简单。
服务
自定义服务在config/services.php中配置,标准服务通过Util::containerSetup()设置。
文件夹结构
bin
:维护脚本。config
:各种设置。文件名合理,注释解释了细节。docs
:一些组件的文档。src
:所有源文件。templates
:内置的Twig模板,可以在实际应用程序中使用作为后备。tests
:phpunit文件。vendor
:第三方组件。
安装
$ composer require umonkey/ufw1:dev-default
待办事项
主要
- 切换到action-domain-responder。
- 将wiki、admin UI、博客等解耦到单独的包中。
次要
- 一些常见的CLI函数。
- 更好的单元测试覆盖率。
推荐阅读
- 《十二要素应用》,开发网络应用的最佳实践。