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