程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 從零開始之ecshop基礎篇(17)

從零開始之ecshop基礎篇(17)

編輯:關於PHP編程

目標:基於自定義的mvc框架開發的案例(項目)

典型的業務邏輯:    電子商務:商城(京東),B2C,C2C(淘寶),團購,秒殺,代購

            內容管理:新浪門戶類,優酷視頻管理,博客文章管理,微博

            論壇:

我們的需求,商品管理案例!參考ecshop應該出現的商品管理的基本功能實現。

ecshop,使用率非常高,電子商務平台(網上商城系統)。

上傳拷貝php源代碼        創建數據    基本配置

下載ecshop的源代碼,解壓,將upload目錄拷貝(上傳)到web目錄:建議改成ecshop的名字

使用浏覽器,訪問到ecshop目錄中的index.php即可。自動跳轉到安裝界面(如果需要重新安裝,也可以請求到該地址)

檢查環境,典型的需要:mysql擴展,gd擴展(圖片處理擴展)

配置信息

數據庫服務器部分:

管理員信息:

安裝測試數據:

等待安裝完畢:

Tips:建議選擇PHP5.3X版本

 

數據結構的設計

編碼的設計

典型的編碼,分成兩大方向:二次開發,基於框架開發

二次開發:在已有的產品(業務邏輯都已經實現)上做修改,升級的開發方式。

優點:速度快,通用業務邏輯已經被實現。

缺點:定制型差。

典型的產品:

電子商務:ecshop,ecmall,shopex,zen-cart,oscommerce ,麥進斗

內容管理:dedecms,帝國cms,phpcms,drupal,wordpress

論壇:phpwind,discuz

框架開發:

框架,沒有實現業務邏輯,只實現了底層代碼。

優點:不用寫重復的底層功能代碼,直接用即可,定制性強。

缺點:周期較長。

典型的框架:ThinkPHP,Yii,Ci,Zend-framework,symphony

PHP代碼與HTML代碼 出現在同一文件中。

典型的是:

上面是PHP先實現所有的業務邏輯,下邊再是HTML決定顯示樣式。

或者直接利用PHP echo ,輸出需要的HTML代碼。

3
4
5
6
7
8
9

            }

 

將負責數據處理,業務邏輯處理的PHP代碼,與負責顯示效果處理的HTML(CSS,JS)等分開來進行管理。

典型的實現:將負責顯示的HTML相關部分,拆分到獨立的HTML中,在PHP處理完業務邏輯後,再將HTML代碼加載到該文件中。

簡單的說就是把原來混編的代碼分開到2個頁面。這2個頁面要組合起來才能實現和原來一個混編文件一樣的效果。

比如:match_list.html(展示)match_list.php(邏輯) require './match_list.html';

 

template:參見match_list.html

使用html相關代碼負責顯示結構,使用動態代碼php實現數據的展示,該類型的文件,在項目中,稱之為模板文件,template.

要求:浏覽器用戶請求,必須請求負責邏輯功能的PHP文件才可以。

如何限制浏覽器用戶不能請求到html模板文件?

典型的實現方式2種:

3
4
5

</Directory>

Deny from All

3
4
5
6
7
8
9
10


//

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


        }         $rows = $db->fetchAll($sql);
}

3
4
5
6
7
8
9
10
11
12
13
14

<hr>
<?php     <?php     <a href=    <?php     <a href=    <?php     <br>
    <?php <?php     <?php 

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

/**
 *  */
         *      *
     * @return array      */                                        }
}

3
4
5
6
7
8
9
10
11
12
13

//
//$model_match = new MatchModel;
$rows = $model_match->getList();

3
4
5
6
7
8
9
10
11
12
13
14
15
16

<hr>
<?php     <?php     <a href=    <?php     <a href=    <?php 
    <a href=    <?php <?php     <?php 

3
4
5
6
7
8
9
10
11
12

$model_match = new MatchModel;
$model_match->delById(

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

     *      *
     * @param $match_id
     *
     * @return bool
     */                    
                    }

3
4
5
6
7

 *  */  
 }

3
4
5
6
7
8
9

 *  */  
 }

3
4
5
6
7
8
9

                         }
 }

3
4
5
6
7
8
9
10
11
12
13
14

                 }
                        }
 }

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

     *      *
     * @param $match_id
     *
     * @return bool
     */                    
                

3
4
5
6
7
8
9
10
11

    <?php     <a href=    <?php     <a href=    <?php     <br>
    <?php <?php     <?php 

Controller,控制器

3
4
5
6
7
8
9

//

3
4
5

    }    }

   

在相應的部分執行正確的控制器代碼即可:

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

        $model_match = new MatchModel;
    $rows = $model_match->getList();
    } 
        $model_match = new MatchModel;
    $model_match->delById(    }

3
4
5
6


//

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

 *  */          *      */          }
     
           *       */          }
 }

3
4
5
6
7
8
9
10
11

//$action = $a.//

3
4
5
6

        
    }
}

3
4
5
6
7
8
9
10
11
12

                    $model_student = new StudentModel;
                    }
}

3
4
5
6
7

                }
}

3
4
5
6

<?php     <?php     <?php     <?php <?php 

3
4
5
6

3
4
5
6
7
8
9
10
11
12
13
14
15
16

////////

測試:localhost/six/index.php?c=Student&a=list localhost/six/index.php?c=Match&a=list

3


header(

強調:

有了單一入口,就要求,用戶的所有的請求都要從單一入口文件請求到。

目錄分成2個目錄

體現框架代碼和業務邏輯代碼的區別

將基礎模型,mysqlDB類定義文件放在框架代碼:

將業務邏輯相應的控制器,模型,視圖文件分別放在application目錄中

入口文件,通常放置在站點根目錄:

修改項目中使用的路徑

3
4
5
6
7
8
9

    /index.php   入口文件
    /application 應用程序目錄
        /model      模型類目錄
        /view       視圖類目錄
        /controller 控制器類目錄
    /framework   框架代碼目錄
        /Model.        /MySQLDB.class.php  mysql數據庫的操作類        

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved