<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            PHP MVC框架路由學習筆記

            時間:2024-12-03 20:28:08 php語言 我要投稿
            • 相關推薦

            PHP MVC框架路由學習筆記

              文章主要介紹了PHP MVC框架路由學習筆記的相關資料,需要的朋友可以參考下。

            PHP MVC框架路由學習筆記

              提到PHP開發web,自然離不開開發框架,開發框架為我們提供了靈活的開發方式,MVC層分離,業務解耦等。。。

              第一篇先來簡單點的,說說MVC框架的路由功能。。。

              一般的單入口框架路由都是這樣的結構:

              domain/index.php/classname/functionname/var1/var2

              這里的index.php 就被稱為入口文件。。。對于服務器而言,你這里訪問的就只有index.php 后面調用的controller 和里面的方法,甚至傳值都是在框架內部基于PHP層面實現的。

              Talk is cheap, show you the code !!

              首先,先建立好下面的文件結構

              我們來動手試試,怎么才能訪問到controllers里面的文件。。。

              在index.php里面輸入以下內容

              print_r($_SERVER);

              然后訪問 以下地址試試。

              yourdomain/index.php/class/function/var1

              這里作者我是用本地環境的,我訪問的地址是localhost/MVC/index.php/class/function/var1

              我貼出最重要的2個變量

              [REQUEST_URI] => /MVC/index.php/class/function/var1

              [SCRIPT_NAME] => /MVC/index.php

              其實路由最基本的原理就在這里:

              通過這2個變量來提取url地址里的class 和 function,參數等,然后把class include進來,通過PHP的回調函數call_user_func_array 調用對應的function和傳遞相應的參數。

              接下來上代碼,讀代碼應該比我寫的易懂。哈哈~~

              index.php 的內容如下

              ?

              1

              2

              3

              4

              5

              6

              7

              8

              9

              10

              11

              12

              13

              14

              15

              16

              17

              18

              19

              20

              21

              22

              23

              24

              25

              26

              27

              28

              29

              30

              31

              32

              33

              34

              35

              36

              37

              38

              39

              40

              41

              <?php

              # 定義application路徑

              define(‘APPPATH', trim(__DIR__,'/'));

              # 獲得請求地址

              $root = $_SERVER['SCRIPT_NAME'];

              $request = $_SERVER['REQUEST_URI'];

              $URI = array();

              # 獲得index.php 后面的地址

              $url = trim(str_replace($root, ”, $request), ‘/');

              # 如果為空,則是訪問根地址

              if (empty($url))

              {

              # 默認控制器和默認方法

              $class = ‘index';

              $func = ‘welcome';

              }

              else

              {

              $URI = explode(‘/', $url);

              # 如果function為空 則默認訪問index

              if (count($URI) < 2)

              {

              $class = $URI[0];

              $func = ‘index';

              }

              else

              {

              $class = $URI[0];

              $func = $URI[1];

              }

              }

              # 把class加載進來

              include(APPPATH . ‘/' . ‘application/controllers/' . $class . ‘.php');

              #實例化

              $obj = new ucfirst($class);

              call_user_func_array(

              # 調用內部function

              array($obj,$func),

              # 傳遞參數

              array_slice($URI, 2)

              );

              在application/controllers 里面添加下面2個文件

              index.php 用于作為默認控制器

              ?

              1

              2

              3

              4

              5

              6

              7

              8

              9

              10

              11

              12

              13

              14

              15

              16

              17

              18

              19

              20

              21

              22

              23

              <?php

              class Index

              {

              function welcome()

              {

              echo ‘I am default controller';

              }

              }

              ?>

              hello.php

              <?php

              class Hello

              {

              public function index()

              {

              echo ‘hello world';

              }

              public function name($name)

              {

              echo ‘hello ‘ . $name;

              }

              }

              ?>

              測試一下看看,能不能訪問了。根據上面的路由結構。我們來試試

              這個訪問正常,正確調用了hello這個class內部的name方法,然后把參數barbery傳遞過去了。。。

              再試試不輸入function name,看看能不能默認調用index。。

              答案也是可以的。。。

              最后一個,訪問root地址看看

              也正確的映射到了默認控制器上。。。

              ok,一個簡單的MVC路由功能就完成了。。。

            【PHP MVC框架路由學習筆記】相關文章:

            如何使用PHP開發自己的MVC框架05-21

            PHP框架之路由與控制器詳解05-15

            PHP.MVC的模板標簽系統05-13

            PHP框架的概念07-11

            JavaScript客戶端MVC框架用法06-07

            PHP框架是什么04-22

            php框架Phpbean說明03-03

            如何使用PHP框架01-21

            怎么在yaf框架增加php擴展框架07-24

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看