Start your MVC (3) with PHP to achieve your Model layer

xiaoxiao2021-03-06  199

Third, realize your MODE layer MODEL layer, is the data processing layer in the MVC mode, is used to design and design to three concepts when conducting his design: ------ Model class. It is a physical class. Data used to save all the fields of the record of the database table. And you can verify this integrity of the recorded data. ------ ModelManager class. Is the management class of the entity class. Usually, each entity class (model) has a corresponding management class (ModelManager). The management class can be used to manage data records in the entity class (for example, delete / add / change .....). But the ModelManager class does not have to have a corresponding Model class. ------ DB class. Used to manage the connection to the database. ModeElManager class all the operations of data. It is achieved by this DB class. In the entire MVC mode. Only this DB class can operate directly. At the same time, only the ModelManager class can call the DB class. It seems that it is more troublesome. But actually is not complicated. This model layer design is designed. The shopping cart program for online shopping systems is extremely similar. Model can be seen as the information class of a single commodity in the shopping cart. Manager can be regarded as an order. Orders are used to manage procurement products. Here is a simple example. It should be relatively typical. Focus on his entire design and process. Take carefully. In fact, it is not difficult. Note: All classes and methods used in the following examples are simplified. The actual situation is much more complicated than this. but. As an example, it is already enough. Folder structure:

| - DB.PHP | - MODEL.PHP | - MANAGER.PHP | - MODELTEST1.PHP | - MODELTEST2.PHP | - MODELTEST3.PHP | - MODELTEST4.PHP | - MODELTEST4.PHP | - MODEL / | - MODEL / CLASSMODEL.PHP | - MODEL / StudentModel.php | - model / classmanager.php | It is the form of Student (student).

Class Table Field: CLS_ID --------- INT -------- NOT NULL CLS_NAME -------- String ----- Not null cls_address ----- String ----- Nullstudent Table field: stu_id --------- INT -------- Not Null Stu_clsid ------- Int -------- Not null STU_NAME -------- String ----- NULL

ClassModel.php entity class which is a table inside ClassModelClassManager.php class management class ClassModel ClassManagerStudentModel.php entity class which is a table inside StudentModelStudentManager.php student management class StudentManagerDb.php StudentModel which is a database management class operation His interface and normal usage are the same, but this example is only analog implementation of this excuse. Therefore, you can run without using a real database. File 0: (model.php) Model layer entity Basic class

1, "name" => "this is name"); var $ data; // This entity class data constraint information, used to determine the accuracy of the added $ DATA data // see: ClassModel Var $ match; // The name of the table in the database in the database VAR $ TABLE; / / Initializing Function Model ($ THIS-> DATA = & $ data;} // Setting the entity for a value Function Set ($ key, $ value) {$ this-> data [$ key ] = $ Value;} // Get a data of this entity Function Get ($ key) {Return $ this-> data [$ key];} // Get all the data for this entity Function getData () {Return $ this -> data;} // Get the constraint information of the entity Function getMatch () {Return $ this-> match;} // Verify the accuracy of the entity data and integrity Function isvalid () {foreach ($ this-> match as $ key => $ value) {if (! isset ($ value ["null"]) &&! isset ($ this-> data [$ key]) DIE ("$ key can not be empty"); / / ..... Can be added to other judgments, such as exceeding the maximum number of values, or long long .....}}}?> File 1: (manager.php) MODEL layer is based on entity management class

db = new db ();} // Used Insert entity information into the database Function INSERT ($ model) {$ model-> isvalid (); $ table = $ model-> table; $ match = $ model-> getMatch (); $ data = $ model-> getData (); $ Str1 = $ str2 = array (); foreach ($ match as $ key => $ value) {ix ($ data ($ data [$ key)) {$ str1 [] = $ key; $ str2 [ ] = ($ Value ["type"] == "c")? "/"""" ": $ data [$ key];}} $ sql =" INSERT INTO $ Table (". IMPLODE (", ", $ str2).") ""). ")"; return $ this-> db-> execute ($ sql);}} ?> File 2: (ClassModel.php) Class of Class Information

Array ("name" => "cls_id", "type" => "i"), "cls_name" => array ("name" => "CLS_NAME", "TYPE "=>" C ")," CLS_ADDRESS "=> Array (" Name "=>" CLS_ADDRESS "," type "=>" c "," null "=> true)); var $ TABLE =" Class "; // Initialize Function ClassModel (& $ DATA) {Parent :: Model ($ data);} // Used to get this class of students' information function getStudent () {require_once "./model/studentmanager.php"; $ manager = New StudentManager (); $ classid = $ this-> get ("cls_id"); return $ manager-> getList ($ classid);}}?> File 3: (studEntModel.php) physical information

array ("name" => "stu_id", "type" => "i"), "stu_clsid" => array ("name" => "stu_clsid", "TYPE "=>" I ")," stu_name "=> Array (" name "=>" stu_name "," type "=>" c "," null "=> true); var $ table =" student "; // Initialize Function StudentModel (& $ DATA) {Parent :: Model ($ data);}}?> File 4: (ClassManager.php) class entity management class db-> query ($ SQL);} // Find and return a class of physical classes Function & Findonemodel ($ ID) {$ SQL = "SELECT * FORM CLASS WHERE CLS_ID = $ ID"; $ data = $ this-> db-> getone ($ SQL ); If ($ data == null) DIE (" Class does not exist! "); Require_once" ./model/classmodel.php "; $ model = new classmodel ($ data); return $ model;}}?> File 5: (studEntManager.php) Student entity management class

db-> query ($ sql);}}?> file 6: (db.php) database connection management class for sharing and manage Data Access. Since the content involved in this class is not the content to be discussed, this class simulates "Method of Real Database Management Class", the excuse is the same, but the content inside the interface function is not correct, just simulation The data. There are a lot of this kind of practice online, you can find yourself, (** Detailed introduction in the second chapter of this series).

con = mysql_connect (************* ********); .........} // Execute Data Query Statement Function & Query ($ SQL) {// $ Result = MySQL_QUERY ($ SQL); .... ............ // Return $ Result; if ($ SQL == "Select * from student where stu_clsid = 2") Return Array ("0" => Array ("stu_id" => 1, "stu_clsid" => 2, "stu_name" => "stu_name"), "1" => array ("stu_id" => 2, "stu_clsid" => 2, "stu_name" => "student2" )); DIE ("empty class");} // Get a number of query results Function Getone ($ SQL) {// $ results = mysql_query ($ sql); ............. // Return $ Result [0]; if ($ SQL == "SELECT * FORM CLAS WHERE CLS_ID = 1") Return NULL; if ($ SQL == "SELECT * FORM CLASS WHERE CLS_ID = 2") Return Array (" CLS_ID "=> 2," CLS_NAME "=>" ClassName "," CLS_ADDRESS "=>" ClassAddress ");} // Execute Database Update / Add / Remove Statement Function Execute ($ SQL) {// MySQL_QUERY ($ SQL) (Echo "
Inserting operation
...
Insert operation
"; r ETURN TRUE;}?> Test file 1, (modeltest1.php) (Query class label (CLS_ID) 2 class student list)

FindOnemodel ($ ClassID); $ data = & $ model-> getStudent (); Foreach ($ data as $ value) echo "Number:". $ value ["stu_id"]. " ------ Name: "$ value [" stu_name "]."
";> The result is: No.: 1 ------ Name: student1 No .: 2 ---- - Name: Student2 Test Document II, (ModelTest2.php) (Query Class Number (CLS_ID) 1 class student list)

FindOnemodel ($ ClassID); $ data = & $ model-> getStudent (); Foreach ($ data as $ value) echo "Number:". $ value ["stu_id"]. " ------ Name: "$ value [" stu_name "]."
";> The result is:

The class does not exist! Test file three, (modeltest3.php) (add data to the Student table to the STUDENT table)

3, "stu_clsid" => 2, "stu_name" => "student3"); Require_once "./model/studentmodel.php"; $ data); Require_once" ./model/studentManager.php"; $Manager = New StudentManager ($ data); $ Result = $ manager-> INSERT ($ model); Echo $ Result? "

Insert operation successfully ": "

Insert operation failed ";> The result of return is:

Insert operation ... Insert operation completes the insertion operation Successfully test file four, (modeltest4.php) (Add data to the STUDENT table) 3, "stu_name" => "student3"); Require_once "./model/studentmodel.php"; $MODEL = New StudentModel ($ DATA); Require_once "./model/studentmanager.php"; $ data); $ result = $ manager-> INSERT ($ model); Echo $ RESULT?"

Insert operation Success ":"

Insert operation failed ";?> The result of the return is:

The value of Stu_Clsid cannot be evaluated:

The value of "match" "Match" in StudentModel is not empty, and the code in the code is $ data = array ("stu_id" => 3, "stu_name" => "student3); lacks the value of the STU_CLSID, so it cannot Check the error by the integrity of the data.

转载请注明原文地址:https://www.9cbs.com/read-128880.html

New Post(0)