rnr1721 / le7-framework
le7 PHP MVC 框架 - 项目骨架
1.1.1
2023-12-03 19:48 UTC
Requires
- php: >=8.1
- ext-gettext: *
- nyholm/psr7: ^1.5
- rnr1721/le7-cache: ^1.0
- rnr1721/le7-container-php-di: *
- rnr1721/le7-db-redbean: ^1.0
- rnr1721/le7-entify: ^1.0
- rnr1721/le7-jsenv: ^1.0
- rnr1721/le7-logger: ^1.0
- rnr1721/le7-menu-builder: ^1.0
- rnr1721/le7-static-snippets: ^1.0
- rnr1721/le7-view-twig: ^1.1
- rnr1721/psr7-server: ^1.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- rnr1721/le7-testing: ^1.0
- vimeo/psalm: ^5.7
README
Le7 框架是一个简约的 PHP MVC 框架,用 PHP 编写。
这是一个骨架(用于与 le7 框架一起使用的空应用程序)
它能做什么?
- 创建 Web、REST API 或 CLI 应用程序
- 默认支持多语言。每个页面都可以显示在配置中的任何语言上
- 可以使用任何模板引擎 - Twig、Smarty 或纯 PHP
- 主题支持,以扩展工作与设计
- 在具有不同命名空间的不同路由组中使用控制器
- 轻松扩展框架功能
- 轻松使用数据提供程序进行实体框架,用于验证数组、表单等...
- 使用 PSR 标准 - 缓存、事件、消息、中间件、请求处理器等
- 轻松替换一些功能,如日志记录器、缓存、模板引擎等
- 使用任何容器,核心只使用 ContainerInterface 的 get 和 has 方法
- 使用任何缓存 - 文件系统、memcached、null 等...可以轻松编写自己的
- 在 cookie 和会话中存储闪存消息
- 可以编写自己的会话处理器
- 非常简单的路由
- 内置验证类,但您可以使用自己的任何类
- 对 POST、PUT、PATCH、DELETE 方法进行 CSRF 保护
- 轻松在控制器构造函数和操作方法中注入依赖项
- 轻松在中间件、事件中注入依赖项
- 易于理解的容器配置
- 使用最小依赖集,轻量级
- 轻松配置 CSP 和其他安全头
计划中
- 测试
- 核心文档
- 数据库管理包
- 用户管理包
要求
- PHP 8.1 或更高版本
- Apache 或 Nginx 网络服务器
- 正在使用 Workerman 进行开发,但不知道如何使用 Workerman 服务器提供静态内容(js、img、css)
贡献
如果您是一位希望为开源项目做出贡献的开发者,我们邀请您查看我们的项目,并考虑加入我们的贡献者社区。欢迎加入!
通用
此骨架使用 PHP-DI 作为依赖注入容器,但您可以使用任何具有自动装配功能的 DI 容器。框架核心仅使用 ContainerInterface 的 get 和 set 方法。但是,在这种情况下,您需要编辑此骨架。此外,此骨架使用 Nyholm PSR http-message 实现,但您可以使用任何其他实现。
安装
您可以在当前目录中使用 composer 安装 le7 框架
composer create-project rnr1721/le7-framework .
在某个目录中
composer create-project rnr1721/le7-framework ./myle7framework
在任何包含 README.md 文件的文件夹中,您可以在其中找到有关引擎功能的信息
Web 服务器配置
Apache
这是 Apache 网络服务器的标准配置。此文件 (.htaccess) 已位于 public 文件夹中
RewriteEngine On RewriteBase / # Route everything else to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] ## Folder structure of project
Nginx
Le7 引擎可能适用于 nginx,但我目前没有对其进行测试。将来,我将安装此服务器并提供 nginx 的配置
内置 PHP 服务器进行测试
$ ./runserver.sh
Workerman
我在 Workerman 中进行了检查,它工作正常。但问题是,我不知道如何使用 Workerman 提供静态文件。但就目前而言,作为一个 API 引擎,它在 Workerman 中相当有用
在 Workerman 中运行
$ php ./workerman.php
文件夹拓扑结构
PROJECT_ROOT
App - application dir.
Classes - Own classes for developed project
Controller - Dir for controllers by default. Can change.
Api - Api controllers
Cli - CLI commands
Web - Web controllers
Locales - Gettext locales
Middleware - User middlewares
Model - User models for tables
View - Templates for all themes and templates themes folders
main - main theme templates
ViewExtensions - Extensions for Twig, Smarty etc
config
di - Configuration of DI container
public - Web server public dir
libs - Theme-independent js, css, images etc
bootstrap5 - bootstrap
debugbar - debugbar assets for dev mode.
fonts - Fonts
themes - Themes directory
main - Default theme (as example)
css - Css files for main theme
fonts - Fonts files for main theme
images - Images files for main theme
js - JS files for main theme
uploads - Internal uploads dir
var - Directory for cache, temp, logs and similar data
cache - Cache folder
containers - Di container folder (PHP-Di)
logs - Logs folder if filesystem logs
routes - cached routes data objects
sessions - sessions dir if filesystem sessions
temp - temp dir for any purposes
templates_cache - templates cache for your template engine
templates_compiled - compiled templates dir for your template engine