版本2.0.2-2024-12-13
一个简单的Web应用框架实现模型视图控制器(MVC)体系结构模式。
composer require "simplesamlphp/simplesamlphp:^2.2" )UMVC支持模块,请参阅配置/组件。
该框架支持其框架插件的功能测试。全球安装的编码受体必须与所需的(当前v3.1.2)兼容
UMVC支持CLI。您可以创建自己的命令。内置命令是:
作为php app $command $action $parameters运行命令
该框架可以与作曲家一起包含在您的项目中。运行composer require uhi67/umvc:dev-master 。可以使用composer create-project --prefer-dist uhi67/umvc-app name创建新的空项目。这将为您提供一个使用UMVC框架的新的空应用程序,以纳入命名目录。选择您喜欢的任何名称。
警告:这部分正在建设中。在班级定义的放映中了解有关上述类的更多信息。
composer.json ,并包括uh67/umvc ,例如composer init --name myname/myapp --require uhi67/umvc:* 。composer update 。vendor/uh67/umvc/app复制到应用程序的根。这是CLI命令的启动器。vendor/uh67/umvc/www/index.php和.htaccess复制到您的应用程序的www目录。这是Web界面的路由器。config/config.php文件中创建应用程序的配置,请参阅vendor/uh67/umvc/config/config-template.php中的模板。runtime目录可写的,以放置临时文件。www/assets目录Writable,以放置各个组件的缓存资产文件。 appcontrollers名称空间在controllers DIR中创建您的控制器,然后从uhi67umvcController中得出它们。views中的视图,并根据views/controller/action.php结构组织它们。models目录中创建模型。数据库模型是uhi67umvcModel ,无数据库模型是uhi67umvcBaseModel 。 migrations目录。views/layouts目录中。视图可以调用其他部分视图。commands目录中定义cli命令,从uhi67umvcCommand类派生。框架中有一些内置命令。 php app命令列出了内置和自定义的所有可用命令。messges/la.php文件中,其中“ la”是您要翻译的语言。 所有组件,包括主要应用程序类本身在内的大多数UMVC类都是uhi67umvcComponent 。 Component实现属性功能:魔术Getter和Setter使用GetProperty和SetProperty方法。 Component是可配置的:构造函数接受包含公共属性值的配置阵列。
MySqlConnection连接到数据库。包括SQL查询构建器。目前, Connection的唯一实现。FileCache CacheInterface的唯一实现。SamlAuth AuthManager的唯一实现。L10n简单的本地化,默认的自动包含在内,仅翻译UMVC消息。L10nFile基于文件的本地化,用于翻译应用程序的消息。 Form - 具有内置视图的小部件,可使用模型显示和处理HTML表单。Grid (窗口小部件,但内置视图仍缺少) - 显示分页的,过滤的模型列表。Query - 表示PHP结构中的参数化和灵活的SQL查询。可以从中构建SQL命令。Request - 表示HTTP请求,可用于获取并发布参数。Session - 表示当前的PHP会话,可用于获取和设置变量。 Web应用程序的单个输入脚本是www/index.php 。 CLI应用程序的单个输入脚本分别是app文件。它们都必须从vendor/uhi67/umvc/目录中复制到您的应用程序目录中。
www/.htaccess规则将所有非发现请求重定向到www/index.php 。但是,静态资产直接从www目录提供。稍后了解有关服务图书馆资产的更多信息。
index.php初始化自动加载器,加载主配置,创建主对象(在配置中定义的类,通常是uhi67/umvc/App或其后代)。主要配置遵循可配置Component的规则。
以下方式处理为https:// myapp/acontroller/anaction形成的所有URL以下方式:
uhi67/umvc/App解析请求,计算实际控制器类(从uhi67/umvc/Controller派生)来使用,创建控制器并运行请求的操作方法。如上所述, Acontroller将您的controllers目录中的控制器类称为AconTrollerController ,而Anaction则指该操作方法(作为ActionAnaction )。
如果URL中缺少操作名称,则将运行actionDefault 。如果缺少控制器名称,则将使用配置的Main Controller 。也可以在不指定控制器名称的情况下使用默认控制器的操作名称创建一个URL - 唯一的限制您不能具有具有与此操作相同名称的控制器。
以下方式处理为php app acontroller/anaction形成的Al CLI命令:
uhi67/umvc/App解析请求,计算实际的控制器类(从uhi67/umvc/Command派生),创建控制器并运行请求的操作方法。如上所述, Acontroller在commands目录中将您的控制器类称为AconTrollerController ,而Anaction则指动作方法(作为ActionAnaction )。内置命令可以以相同的方式运行。我们应用程序中具有相同名称的命令覆盖了内置命令。
当前URL请求的部分可以访问:
要使用控制器和操作名称以及OptioAnl Qurey参数创建新的URL,请使用以下一个:
在您的视图文件中,您可以以静态方式引用位于www目录下的静态资产,例如<link href="/assets/css/app.css" rel="stylesheet"> 。相反,如果要引用由作曲家创建的供应商库中某个地方的资产文件,则可以以这种方式使用它们:
<script src="<?= $this->linkAssetFile('npm-asset/bootstrap/dist', 'js/bootstrap.bundle.min.js') ?>"></script> linkAssetFile函数将第一个参数中目录中的所有文件复制到www下的资产缓存目录中,并为文件int in the第二个参数创建有效的URL。注意:第一个参数标识资产包。只有第一个呼叫任何包装复制文件。所有后续调用到同一软件包仅生成文件的链接。
资产缓存由composer install命令清空。资产缓存始终是www/asset/cache ,不可配置。
...
该存储库包含用于内部编码单元测试的内置测试应用程序。 tests程序目录中测试应用程序的唯一目的是能够运行单元测试,而不是启动示例应用程序。
git clonecomposer updatetests/_data/test-config.phptests/_data/test-config.php中的数据库设置创建umvc-test数据库php vendor/bin/codecept run unit进行单位测试更多的单位测试即将到来...
内置的对接测试环境可用于使用不同的PHP和数据库版本进行测试。
步骤:
tests/docker-compose.yml中配置所需的数据库版本(此模板文件的制作克隆)tests/docker/Dockerfile中配置PHP版本(扩展安装步骤可能会更改)tests/.env中配置使用的端口和基本净值docker compose up --build -d (在tests Dir)中构建堆栈docker exec -it umvc-php-1 php vendor/bin/codecept run unit运行单元测试