rotexsoft/slim3-skeleton-mvc-app

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

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提供支持),可以扩展以构建更复杂的应用程序。

尽管您不需要对SlimPHP 4框架(https://slim.php.ac.cn/docs/v4/)有专家级理解即可使用此模板应用程序框架构建网络应用程序,但这样的理解将有助于最大化此模板应用程序框架的功能。

使用Slim MVC框架的功能/好处

  • 它为您添加了模型-视图-控制器结构。实际上,它更多地是控制器-视图功能,提供了一个用于存放模型类的“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映射到控制器类中的方法。如果您坚持使用与路由方案兼容的控制器,则不需要为您的应用程序定义任何路由。

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

    应该始终存在一个名为 slim-#-edition-versions-x.x 的分支,该分支将与 master 同步,并从中标记最新主要版本。该分支中的 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/》)。
    • 项目-website 分支于 2024 年 5 月创建,目前正在开发中。当文档网站准备就绪时,将删除此通知。目前请继续阅读您当前使用的该框架版本的文档。

问题

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