bitshost/upmvc

upMVC. 模块化模型视图控制器。一个具有集成路由的模块化PHP MVC系统,适用于可扩展和组织良好的Web应用程序。内置命名空间支持。面向对象编程(OOP)。

维护者

详细信息

github.com/upMVC/upMVC

来源

问题

安装: 35

依赖者: 0

建议者: 0

安全: 0

星级: 1

关注者: 2

分支: 2

开放问题: 0

类型:项目

dev-main 2024-07-14 11:59 UTC

README

模块化模型视图控制器(含路由器)

/*

  • 创建于 2023年10月31日 周二
  • 版权(c)2023 BitsHost

*/

演示: https://upmvc.com/demo/

Rasmus Lerdorf:所有PHP框架都很糟糕!

Rasmus Lerdorf:所有PHP框架都很糟糕!

"许多框架一开始看起来可能非常吸引人,因为它们似乎将Web应用程序开发简化为几个简单的步骤,导致一些代码生成和通常自动模式检测,但同样的捷径很可能成为你的瓶颈,因为它们通过牺牲灵活性和性能来实现这种简单性。"

所有框架:"通过牺牲灵活性和性能来实现这种简单性" Rasmus Lerdorf

upMVC - MMVC,模块化PHP MVC,源于层次化模型-视图-控制器(HMVC)。

介绍模块化MVC - 增强您的开发

在现代框架领域,它们往往什么都做,但又好像什么都不真正重要。这些框架倾向于添加抽象层,要求你在决定切换时学习新的技能和途径。它们还倾向于自己混乱,以复杂而冗余的方式解决简单问题。

以PHP及其blade模板引擎为例。为什么还要引入另一个模板引擎,当PHP已经具备了这项功能?深入研究一个新的框架通常需要大量的重新学习,这将远远超出你的现有PHP知识。

那么,为什么你应该选择MMVC呢?

MMVC(模块化模型视图控制器)不是要重新发明轮子。相反,它是关于优化使用卓越组件。它提供了一种结构化和直接的途径,其多功能性对项目管理和开发证明非常有价值。

但为什么是MMVC呢?

  1. 模块化: MMVC允许你独立于项目其他部分工作在模块上。模块可以无缝交换和集成,增强你的开发敏捷性。

  2. 语言自由: 最重要的是,你有自由用你喜欢的语言编写模块,无论是PHP、JS、PYTHON,还是像TS和React这样的现代技术。你的创造力没有限制。

  3. 以开发为中心: 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文件中建立的规则 - 你可以创建尽可能多的规则。

Screenshot 2024-02-14 141414

Screenshot 2024-02-14 141435

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

Screenshot 2024-02-14 142531

步骤

  • 编辑 /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 团队

图:upMVC-Diagram

文件结构

upMVC-FileStructure