rotexsoft / slim-skeleton-mvc-app
这是一个基于 SlimPHP 4 的模板 MVC Web 应用程序(可以扩展以构建更复杂的 Web 应用程序)。
Requires
- php: >=8.1.0
- rotexsoft/slim-skeleton-mvc-tools: ^5.0.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.8
- phpunit/phpunit: ^10.0
- rector/rector: ^1.0
Suggests
- rotexsoft/leanorm: An efficient light-weight ORM for database access. See http://rotexsoft.github.io/leanorm/
- rotexsoft/versatile-acl: A simple, highly flexible and customizable access control package for PHP applications. See https://github.com/rotexsoft/versatile-acl
- rotexsoft/versatile-collections: A collections package for various use cases (supports strict typing). See https://github.com/rotexsoft/versatile-collections
- dev-master
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.0.0
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-slim-4-edition-versions-5.x
- dev-project-website
- dev-slim-4-edition-versions-4.x
- dev-slim-3-edition
This package is auto-updated.
Last update: 2024-08-29 01:48:47 UTC
README
基于 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###、getResponseObjForLoginRedirectionIfNotLoggedIn、isLoggedIn、makeLink、renderLayout 和 renderView 方法。
-
力求严格遵循 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)
文档
- 快速入门指南
- MVC 功能
- 实际应用:创建电影目录应用程序
- 所有命令行示例都假设您已经切换到新创建的应用程序的根目录。
- 如果您在文档中找到任何问题,请提交一个问题或拉取请求。
分支
以下是本存储库中的分支
- 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 月创建,目前正在开发中。当文档网站准备就绪时,将删除此通知。目前请继续阅读该分支中关于您当前使用的本框架版本的文档。
问题
- 如果您在此骨架应用程序中发现任何问题,请提交一个问题或拉取请求。
- 如果您建议增强功能,请首先创建一个问题,以便进行讨论,然后再提交拉取请求。