
MVPHP是一個簡單,易於黑客入侵的框架,用於開發最小的PHP Web應用程序。許多PHP框架具有陡峭的學習曲線,並深深地抽象了它們的功能。 MVPHP旨在使事情變得簡單,易於且更接近純PHP。它還提供了一個簡單且可自定義的Bootstrap實現,供您開始創建前端而又不麻煩。
其中包括:
不是什麼:
MVPHP不是Laravel,Symfone,Zend等的良好且經過良好測試的PHP框架。此框架旨在快速開發符合符合性的PHP Web應用程序,其開銷很小,意見很少,並且很大的靈活性。使用它自己的風險!如果您遇到錯誤或有任何建議,請創建問題。
composer install 。npm install -g gulp-cli到全球安裝GULP CLInpm install以安裝我們需要構建前端文件所需的工具。gulp來構建前端文件。public目錄。該框架背後的基本思想是從一個可以處理所有基本功能的簡單類開始。
app.php是首先加載我們的config.php設置的引導程序文件,然後通過創建$app對象來實例化我們的主類。還為所有與身份驗證相關的功能創建了$auth對象。我們將主要對象( $app->auth )的屬性指向參考$auth ,以使事情保持簡單並使其在$app的範圍內訪問。
$ app = new MVPHP ();我們所做的幾乎所有事情都會利用這個$app對象。
app.php還需要root目錄中的routes.php文件,我們將在其中定義初始路由。您將在此文件中看到幾個工作示例。
有幾種定義路線的方法以及應該做什麼:
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff here
});閉合是一個匿名功能,當請求URI匹配該路由時將運行。為了使我們的主要MVPHP類中的方法在此匿名函數中可訪問,我們指定use ($app) 。這將導入$app變量到匿名函數的變量範圍中。
$ app -> route ( ' /example/{id} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});您可以指示帶有括號的URI中的可變參數。它們在關聯數組中標識,其關鍵是路由中定義的名稱,而值是請求URI中提供的實際值。
$ app -> route ( ' /example/{id:int} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});您還可以通過使用結腸和約束類型來定義匹配URI參數的約束。刪除約束值將默認為“字符串”約束。
約束選項:
正則表達示例:
與PHP的preg_match函數一起使用的任何表達式都將在此處使用。在實施表達式之前,此工具可用於測試表達式。
// This example requires the ID value to be a 5 digit number
$ app -> route ( ' /example/{id:regex=^[0-9]{5}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});
// This example requires the ID to be lower or uppercase letters between 1-10 characters long
$ app -> route ( ' /example/{id:regex=^[a-zA-Z]{1,10}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
}); $ app -> route ( ' /example ' );有時,您的應用程序會有很多路由,您寧願將它們整理到單獨的文件中,而不是將它們全部放在routes.php文件中。
如果您註冊這樣的路由,則MVPHP將在controllers目錄中查找具有相同名稱的相關文件。在上面的示例中,註冊到/example路由將在控制器目錄中查找example.php文件並需要它。
現在,您可以註冊與example.php文件中的/example端點相關的更多路由。例如,您的controllers/example.php文件看起來像這樣:
// Reiterate this route and do something with it this time
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff
});
// Register any other related route endpoints here
$ app -> route ( ' /example/stuff ' , function () use ( $ app ) {
// Do stuff
});如果要使用帶有不同名稱的特定文件,只需將其指定為第二個參數:
$ app -> route ( ' /example ' , ' myfile ' );這將嘗試需要controllers/myfile.php 。
路線,控制器和模型的概念在此框架中非常寬鬆。為了簡單起見,我們避免使用一堆不同的類。在此框架上下文中,控制器應該只是在定義模型的請求和功能之間進行調解的地方。
查看controllers目錄中的文件以獲取示例。
我們可以使用action方法測試不同的請求方法:
$ app -> route ( ' /example ' , function () use ( $ app ){
if ( $ app -> action ( ' post ' ) ) {
// Do stuff on POST
} elseif ( $ app -> action ( ' get ' ) ) {
// Do stuff on GET
}
});視圖模板存儲在views目錄中。我們可以調用這樣的視圖(通常來自控制器):
$ app -> view ( ' my-template ' );這只是在瀏覽文件夾中查找my-template.php ,需要文件。如果模板文件中有變量,則必須將這些變量傳遞到這樣的視圖方法中:
$ my_var1 = ' Stuff I want to echo in the template. ' ;
$ app -> view ( ' my-template ' , [
' my_var1 ' => $ my_var1
]);現在,在視圖模板文件中可以訪問$my_var1 。
我們不會打擾模板引擎(因為PHP本質上是一種模板語言)。只需像這樣訪問您的html中的雜物:
< p > < ?=$my_var1;? > </ p >有條件的陳述:
< ?php if ( isset($my_var1) ):? >
< p > < ?=$my_var1;? > </ p >
< ?php endif;? >你明白了。純且簡單的PHP模板。
默認情況下,前端使用bootstrap。您可以在frontend目錄中找到所有源文件。從frontend文件夾構建源文件的說明是在項目root的gulpfile.js文件中定義的。
當您第一次在項目根中運行gulp時,將SCSS和JavaScript文件組合在一起,縮小,複製到public文件夾。我們使用的供應商JS和CSS文件(JQuery,Bootstrap等)也被複製到public文件夾中。
在編輯frontend目錄中的SCSS和JavaScript文件之前,您可以在Project Root中運行gulp watch 。 Gulp將注意您將保存到文件保存的任何更改,並在您使用時保存它們。
models/Documents.php類提供了一種從HTML源編寫PDF文件的方法。該類使用WKHTMLTOPDF,可能需要您在這些依賴項起作用之前安裝這些依賴項:
sudo apt-get install xfonts-base xfonts-75dpi urw-fonts
將來將添加更多PDF和其他“文檔”相關功能。
通過查看包含我們主類的models/MVPHP.php文件,深入研究其他可用的實用程序方法。將來還會添加更多!