rotexsoft/slim-skeleton-mvc-app

这是一个基于 SlimPHP 4 的模板 MVC Web 应用程序(可以扩展以构建更复杂的 Web 应用程序)。

5.0.6 2024-05-29 01:01 UTC

README

Run PHP Tests and Code Quality Tools   GitHub release (latest SemVer)   GitHub   Coverage Status   GitHub code size in bytes   Packagist Downloads   GitHub top language   Packagist PHP Version Support (specify version)   GitHub commits since latest release (by date)   GitHub last commit   GitHub Release Date   Libraries.io dependency status for GitHub repo

基于 SlimPHP 3 的此框架版本的文档可以在这里找到。

这是一个由 SlimPHP 4 驱动的模板 Web 应用程序,可以扩展以构建更复杂的 Web 应用程序。

虽然不需要对 SlimPHP 4 框架(https://slim.php.ac.cn/docs/v4/)有专家级的理解,就可以使用此模板应用框架构建 Web 应用程序,但这种理解将有助于最大程度地发挥模板应用框架的功能。

使用 Slim MVC 框架的功能/优势

  • 它将模型-视图-控制器结构添加到您的 Web 应用程序中。实际上,它提供了更多基于控制器的视图功能,并提供了一个名为 model 的文件夹来存放您的模型类(让您负责选择适合您需要的任何 ORM / 数据库访问库或您最舒适的库)

  • 为您的应用程序提供骨架文件夹/目录结构

./path/to/newly/created/app
|-- config/
    |-- languages/
|       |-- en_US.php
|       `-- fr_CA.php
|   |-- app-settings.php
|   |-- app-settings-dist.php
|   |-- dependencies.php
|   |-- env.php
|   |-- env-dist.php
|   |-- ini-settings.php
|   `-- routes-and-middlewares.php
|
|-- logs/
|
|-- public/
|   |-- css/
|   |-- images/
|   |-- js/
|   `-- index.php
|
|-- src/
|   |-- controllers/
|   |-- layout-templates/
|   |-- models/
|   |-- views/
|   `-- AppErrorHandler.php
|
|-- tests/
|
|-- tmp/
|
|-- vendor/
|
|-- .gitignore
|-- composer.json
|-- composer.lock
`-- README.md
  • 在默认的全局命名空间中提供了一些帮助函数,例如 sMVC_UriToString(\Psr\Http\Message\UriInterface $uri)sMVC_addQueryStrParamToUri(\Psr\Http\Message\UriInterface $uri, $param_name, $param_value) 等。在 SlimMvcTools\Functions\Str 命名空间中提供了一些字符串帮助函数

  • 提供了一种自动路由方案,用于将请求 URL 映射到控制器类中的方法,这些控制器类是 SlimMvcTools\Controllers\BaseController 的子类。如果您使用与路由方案兼容的控制器,则无需为应用程序定义任何路由

    • 还支持仅使用纯 Slim PHP 功能操作(即您可以手动/显式定义所有或某些路由(每个路由可能或可能不使用控制器类作为路由处理程序)和中间件。您还可以禁用上述自动路由方案,如果您计划手动定义所有路由。手动/显式定义的路由将覆盖具有相同路径定义的自动路由)
  • 包含一个 BaseController 类(即 SlimMvcTools\Controllers\BaseController),它提供用于身份验证(登录、注销和检查身份验证状态)的方法、列出应用程序中所有控制器类中的所有方法(如果启用自动 MVC 路由,则可以自动路由到),强制 HTTP 400、401、403、404、405、410、500 和 501 响应以及用于使用轻量级且易于扩展的 Rotexsoft\FileRenderer\Renderer 类渲染 php 视图和布局文件的方法。查看该类以获取可在您的应用程序中使用的完整方法列表。

  • 提供用于创建控制器类(扩展 SlimMvcTools\Controllers\BaseController 或其任何子类)的命令行脚本。

    • ./vendor/bin/smvc-create-controller*nix-like 操作系统上,以及在 Windows 上的 .\vendor\bin\smvc-create-controller.bat
      • 注意:./vendor/bin/smvc-create-controller-wizard./vendor/bin/smvc-create-controller 的交互式版本。
  • 附带非常少量的 composer / packagist 依赖(所有依赖都由 SlimMvcTools\Controllers\BaseController 使用),以便您只包含适用于应用程序特定需求的其他依赖项。从而减少应用程序中存在未使用/不需要依赖的可能性。以下是在此框架中使用的包:

    • Slim Framework 版本 4:用于将 http 请求路由到控制器类中的操作方法(或 Slim 可接受的、用于响应匹配定义的路由的调用者),并将 http 响应发送回客户端。
    • 文件渲染器:用于渲染 php 布局和视图文件(基本上包含 php、html、css 和 Javascript 的混合),这些文件将以 html 的形式作为 http 响应体发送回客户端。纯文本、Json、Xml 和其他非 html 响应可以直接从控制器操作方法中发出(它们不需要此渲染器)。
    • Vespula Auth:一个轻量级认证包,用于在 BaseController 中默认的登录和注销操作中认证用户。默认情况下,使用内存中的 sqlite 数据库进行认证,您应切换到适当的数据库如 Mysql(此包也可以进行认证)。
    • Vespula Locale:在此框架中管理本地化字符串的另一个轻量级包。例如,登录过程中的错误消息使用此包的一个实例进行管理,以便在用户选择的语言中显示这些消息。此框架默认支持美国英语和加拿大法语。可以添加其他区域文件到 ./config/languages 文件夹,并且应将这些区域代码添加到容器中($container[ContainerKeys::VALID_LOCALES]),并添加一个带有适当查询字符串的语言链接到布局模板,以便用户在与应用程序交互时可以将其设置为所需的语言。
    • Vespula Log:一个 PSR-3 Logger,在此框架的各个部分用于记录各种事件(如成功登录和注销事件等)。它比其他包如 Monolog 更轻量级,并且相当不错。
    • Pimple:一个简单的依赖注入容器,用于为 \SlimMvcTools\Container 提供动力(此框架附带的符合 PSR-11 的容器)。
    • Nyholm PSR7:由此框架注入到 SlimPHP 的快速 PHP7 实现。
    • Nyholm PSR7 Server:处理 PSR-7 服务器请求的辅助类,也在此框架中由 SlimPHP 使用。

    您还应查看在 \SlimMvcTools\Controllers\BaseController 中可用的公共方法,这些方法将由您的所有应用程序的控制器类继承,并在您的应用程序中非常有用,如 forceHttp###getResponseObjForLoginRedirectionIfNotLoggedInisLoggedInmakeLinkrenderLayoutrenderView 方法。

  • 力求严格遵循 PSR-7 HTTP 消息psr/container 接口,以便轻松使用 PSR-7 请求和响应对象的不同实现和符合 psr/container 的容器。

要求

  • PHP 7.2+(版本 3.X)、PHP 7.4+(版本 4.X)或 PHP 8.1+(版本 5.x)
  • Pdo sqlite (3) 扩展,用于非生产环境中的身份验证
  • Composer (https://getcomposer.org.cn)

文档

分支

以下是本存储库中的分支

  • master: 包含本框架最新主要版本的代码

    应该始终有一个与 master 同步的 slim-#-edition-versions-x.x 分支,并从中标记最新的主要版本。此分支中的 composer.json 将需要 rotexsoft/slim-skeleton-mvc-tools 的最新稳定版本,而不是 master 分支中的 composer.json 所需的 dev-master 版本。

  • slim-4-edition-versions-5.x: 包含本软件包的 5.x 版本的代码(目前正与 master 同步,直到在 master 上开始开发新版本 6.x)
  • slim-4-edition-versions-4.x: 包含本软件包的 4.x 版本的代码。不接受新功能,仅接受错误修复。
  • slim-3-edition: 包含本软件包的 3.x 版本的代码。不接受新功能,仅接受错误修复。
  • 1.X: 包含本软件包的 1.x 版本的代码。已废弃。
  • project-website: 包含本项目的文档网站代码(https://rotexsoft.github.io/slim-skeleton-mvc-app/)。
    • 项目网站分支于 2024 年 5 月创建,目前正在开发中。当文档网站准备就绪时,将删除此通知。目前请继续阅读该分支中关于您当前使用的本框架版本的文档。

问题

  • 如果您在此骨架应用程序中发现任何问题,请提交一个问题或拉取请求。
  • 如果您建议增强功能,请首先创建一个问题,以便进行讨论,然后再提交拉取请求。