對於小型和簡單的項目,包括:
Sekeleton MVC建議使用MVC架構。 MVC代表模型視圖控制器。模型視圖控制器-Wikipedia
Model:
The central component of the pattern. It is the application's dynamic data structure, independent of the user interface. It directly manages the data, logic and rules of the application.
View:
Any representation of information such as a chart, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.
Controller:
Accepts input and converts it to commands for the model or view.
example.com/shop/show-shoes/index.php文件index.php文件需要自動加載(作曲家)和全局助手(稍後再詳細介紹)。index.php sendresponse()中,在$ app實例上調用,該實例將適當的標題和狀態代碼以及發送回瀏覽器發送的內容。現在,您了解了框架如何處理這一切。以下是每個班級的文檔,也是一些示例,可以使您開始開發。
YourAppApp :您的代碼Controllers :所有控制器Model :所有型號View :所有視圖Config.php :用戶配置類Core :框架的代碼public :接觸到網絡index.php :應用程序的起點.htaccess :重新安排所有請求index.phpassets :CSS/JS等所有靜態資產住在這裡storage :編譯的視圖,上傳文檔等。vendor :作曲家下載所需庫Altough大多數框架都遵循DB參數和視圖路徑等配置對對流的對流。
用戶配置生活在您的應用程序中的應用程序目錄中。打開此文件,您可以看到Config類擴展了Baseconfig( Core Config),該文件是在骨架中內部定義的。最重要的是const parmas,一些可能是靜態方法。
該類是通過註釋記錄的,因此請檢查一下,您將可以自己弄清楚所有配置。
用於路由約定,用於ex:。
想像想顯示3個ID路線的帖子將看起來像這樣
example.com/user-post/show-photos/3/paris
上面的示例有
因此,上面的控制器類看起來像
<?php
namespace App Controllers ;
use Core Request ;
class UserPost {
public function showPhotos ( Request $ request , $ id , $ location ) {
# $id= 3 and $location= paris
return view ( ' photos.show ' , [
' id ' => $ id ,
' location ' => ' paris '
]);
}
}但是您可能會問 /, /關於等等的路線?
這些路由會自動路由到default_controller(可以在配置中更改)默認值為sitecontroller, / / action默認為索引方法,該方法也可以在配置中更改。
您還可以注意始終將CoreRequest對像傳遞到第一個參數。它包含各種請求的幫助者(請求部分中的更多信息)。
請求被視為對象。它將通過聾人傳遞給每個控制器的方法,因為第一個參數將以序列後傳遞。前任:
對於URL example.com/user-post/show-photos/3/paris
<?php
namespace App Controllers ;
use Core Request ;
class UserPost {
public function showPhotos ( Request $ request , $ id , $ location ) {
# $id= 3 and $location= paris
return view ( ' photos.show ' , [
' id ' => $ id ,
' location ' => ' paris '
]);
}
}這是請求對象提供的一些方便方法。
/* Check Method of request */
$ request -> isGet ();
$ request -> isPost ();
/*
How to get superglobals
These methods if provided returns specific field or entire array if no parameters are passed.
If field does not exits null is returned
*/
$ request -> query ( ' field ' ); // For GET
$ request -> input ( ' field ' ); // For POST
$ request -> server ( ' field ' ); // For SERVER
$ request -> files ( ' field ' ); // For FILES
$ request -> all (); // For FILES and POST merged 需要將需要發送到瀏覽器的響應可以通過
view ( ' viewpath ' , $ data = []); // viewpath ex. phtots.show for Views/photos/show.php
view ([ ' header ' , ' content1 ' , ' content2 ' , ' footer ' ], $ data = []); // array alternative
json ( $ data = [], $ options , $ depth = 512 ); // Same as setting header("Contetnt-Type: text/json"); and using json_encode() 驗證的靈感來自Laravel,很少提供基本和大多數使用的規則。
$ errorMsgs = Core Validator:: validate ( $ request -> all (), [
" name " => [ " required " , " max:30 " ],
" mobile " => [ " required " , " digits:10 " ],
" photo " => [ " required " , " image:image/jpeg " , " max:100 " ],
]);框架生成的消息很簡單,您可以自定義其中的配置文件。前任。
public static function getMessage ( $ rule , $ field , $ params , $ messages = [])
{
$ messages = [
" required " => " Hmm... plz get the $ field filled :) "
];
return parent :: getMessage ( $ rule , $ field , $ params , $ messages );
}在上面的示例中,所需消息將是自定義的。
如果根據PHP的空()函數將字段留為空,則會失敗。
必須是字符串值。
必須是數字或數字字符串值,如果沒有給定尺寸,則簡單地檢查為數字值
是的,是,是,否,是,否,true,false,0,1否則為false
請求數據必須包含帶有_Confirmation後綴的同一名稱的字段。例如:如果在密碼上使用,它將檢查password_confircation字段
是否是有效的電子郵件ID。
檢查是否有效上傳文件
檢查是否有效圖像。默認情況下允許的類型:Image/jpeg,Image/gif,Image/png,Image/WebP,Image/svg+XML,Image/BMP。
是否通過strtotime()函數傳遞的有效日期
檢查兩個日期是否相等
檢查用戶日期是否在給定的日期之後。
檢查用戶日期是否在給定的日期之前。
驗證和給定的字段必須具有不同的值。
驗證和給定的字段必須具有相同的值。
必須存在驗證的字段可能為空或空。
最大尺寸規則。為了
數字:數字必須小於或等於大小。
字符串:長度必須小於或等於大小。
數組:元素計數必須小於或等於大小。
上載文件:文件大小必須小於或等於大小。
最小規則。約束與最大規則相同。
在配置文件中設置數據庫憑據和DB類型。然後,您可以隨時致電以下連接:
$ conn = Core Database:: getConnection (); // PDO instance 模型是您的企業所在的地方,其中確實包括與DB相關的邏輯。這就是為什麼提供很少有方便的方法的原因:
// suppose
class User extends Model { /* Empty */ }
$ user = new App Models User ();
$ user -> find ( $ id , columns = [ ' * ' ], $ fetchStyle = PDO :: FETCH_BOTH ); // Get single row
$ user -> all (columns = [ ' * ' ], $ fetchStyle = PDO :: FETCH_BOTH ); // get all rows
$ user -> insert ( $ data ); // As associative array of column name and values
$ user -> update ( $ id , $ data ); // $id to be updated with $data
$ user -> delete ( $ id ); // Row to delete with $id模型將表明表的名稱為您的班級名稱的蛇case複數形式。因此,在上面的情況下,用戶類將是用戶相同的AppData是App_Data,而畫廊將是畫廊。您可以通過覆蓋$table屬性來定義自己的名稱,相同的方式$id被視為默認的主鍵,並且也可以被覆蓋。
class User extends Model
{
protected $ table = " my_table " ;
protected $ id = " tbl_id " ;
}任何復雜的事情都需要自己查詢。前任:
use Core Model ;
use Core Database ;
class User extends Model
{
public function deleteByName ( $ name )
{
$ sql = " DELETE FROM $ this -> table WHERE name=? " ;
return Database:: getConnection ()
-> prepare ( $ sql )
-> execute ([ $ name ]);
}
}為了獲取最後一個插入ID,您可以執行Database::getConnection()->lastInsertId() 。