bitshost / upmvc
upMVC. 模块化模型视图控制器。一个具有集成路由的模块化PHP MVC系统,适用于可扩展和组织良好的Web应用程序。内置命名空间支持。面向对象编程(OOP)。
Requires
- php: >=8.1
This package is auto-updated.
Last update: 2024-09-14 12:37:50 UTC
README
模块化模型视图控制器(含路由器)
/*
- 创建于 2023年10月31日 周二
- 版权(c)2023 BitsHost
*/
Rasmus Lerdorf:所有PHP框架都很糟糕!
"许多框架一开始看起来可能非常吸引人,因为它们似乎将Web应用程序开发简化为几个简单的步骤,导致一些代码生成和通常自动模式检测,但同样的捷径很可能成为你的瓶颈,因为它们通过牺牲灵活性和性能来实现这种简单性。"
所有框架:"通过牺牲灵活性和性能来实现这种简单性" Rasmus Lerdorf
upMVC - MMVC,模块化PHP MVC,源于层次化模型-视图-控制器(HMVC)。
介绍模块化MVC - 增强您的开发
在现代框架领域,它们往往什么都做,但又好像什么都不真正重要。这些框架倾向于添加抽象层,要求你在决定切换时学习新的技能和途径。它们还倾向于自己混乱,以复杂而冗余的方式解决简单问题。
以PHP及其blade模板引擎为例。为什么还要引入另一个模板引擎,当PHP已经具备了这项功能?深入研究一个新的框架通常需要大量的重新学习,这将远远超出你的现有PHP知识。
那么,为什么你应该选择MMVC呢?
MMVC(模块化模型视图控制器)不是要重新发明轮子。相反,它是关于优化使用卓越组件。它提供了一种结构化和直接的途径,其多功能性对项目管理和开发证明非常有价值。
但为什么是MMVC呢?
-
模块化: MMVC允许你独立于项目其他部分工作在模块上。模块可以无缝交换和集成,增强你的开发敏捷性。
-
语言自由: 最重要的是,你有自由用你喜欢的语言编写模块,无论是PHP、JS、PYTHON,还是像TS和React这样的现代技术。你的创造力没有限制。
-
以开发为中心: MMVC是为了开发而设计的。你可以将你的项目引导到任何你想要的方向,利用你自己的自动加载器或composer自动加载。Composer/packagist的使用是可选的,而不是强制性的。
真正使MMVC与众不同的是,它能够无限制地利用最新的PHP功能。这个框架解放了你的开发可能性,不再有无限循环。
用例
你可以将系统作为一个独立的系统、作为一个库、作为独立版本中的库(其中它可以作为一个模块),你也可以将其作为一个独立的系统用于独立版本中的/商店 /博客 /应用程序 /其他任何事情 - 以这种方式,你可以将应用程序分割成多个应用程序(商店、博客、应用程序、其他任何事情作为upMVC的单独实例)每个应用程序都有它们连接到相同或不同端点的模块。
安装
(由于尚未发布)
作为库安装。
composer require bitshost/upmvc:dev-main
(composer require bitshost/upmvc:dev-master - 不可用)
(注意:将upMVC作为库使用时,您需要将index.php或其内容放置在您想要使用它的文件夹/文件中,并添加到您的 .htaccess规则中,或者在 .htaccess中复制/粘贴规则,并编辑配置文件 /vendor/upmvc/.. -> /etc/Config.php, /etc/ConfigDatabase.php, /modules/mail/MailController.php )
或
作为项目安装。
composer create-project bitshost/upmvc:dev-main yourFolderNameHere
(composer create-project bitshost/upmvc:dev-master yourFolderNameHere - 不可用)
或 - 当前目录(包括点(.))
composer create-project bitshost/upmvc:dev-main .
设置
/etc/Config.php
/etc/ConfigDatabase.php
/modules/mail/MailController.php
添加路由
1 - 通用路由 - > etc/Routes.php
2 - 特定路由(特定路由) - > modules/yourmodule/routes/Routes.php
3 - 在模块初始化器中添加模块路由 - > etc/InitMods.php
注意
友好URL是一个简短且简单的Web地址,它将重定向到更长的Web地址。在Sitecore中,友好URL被称为别名。
我们通过结合一些 .htacces规则和模块路由来实现这一点。检查 modules/test/routes/Routes.php 和 .htaccess文件 - 你将注意到这些特定路由在 .htaccess文件中建立的规则 - 你可以创建尽可能多的规则。


在同一文件中,modules/test/routes/Routes.php,你将看到如何以非常直接的方式处理大量带有参数的URL(如idProduct)的示例。

步骤
- 编辑 /etc/Config.php, /etc/ConfigDatabase.php, /modules/mail/MailController.php 并使用您的数据。
- 以MVC风格(模型、视图、控制器)创建您的模块。
- 您可以选择是否从common/bmvc子目录使用BASE MODEL、BASE VIEW和BASE CONTROLLER。
- BaseModel包含所有CRUD操作所需的数据;只需在您的模块模型中扩展它,您就有一个现成的CRUD模块;请参阅示例模块 modules/user。
- 为每个模块创建一个独特的命名空间
- 您的模块路由应位于 modules/YourModule/routes - 文件 Routes.php
- 因为这些路由应呈现给Router,您必须向InitMods.php提供它们的命名空间并初始化您的模块路由。
- 别忘了更新 composer.json,包括您模块和路由的新命名空间,并从终端刷新composer
- composer dump-autoload
- php composer.phar dump-autolad
- 设置您的PHPMailer - mail/MailController.php
在示例模块和upMVC中,您有多种方法可以完成任务,不要像其他人一样强制执行规则,但要尊重MVC、MMVC和纯PHP及OOP编程的架构模型。
命名惯例
考虑建议
- 模型、视图、控制器 - 将不带模块名称在它们的名称中使用。例如,模块名称 = books
- Model.php - 类 Model; View.php - 类 View; Controller.php - 类 Controller;
- 并为每个模块创建一个独特的命名空间 - 命名空间 ModuleName - 例如 Books;
- 您的模块路由应位于 modules/yourModule/routes - 文件 Routes.php
- Routes.php 类 Routes 在文件夹 /modules/books/routes
- 命名空间 ModuleName\Routes,例如 Books\Routes
BitsHost 团队
文件结构