版本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 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運行單元測試