手把手编写PHP框架 深入了解MVC运行流程

2019-05-03 01:54:11王振洲

3.2 代码规范

在目录设置好以后,我们接下来就要来规定一下代码的规范:
 1.MySQL的表名需小写,如:item,car
 2.模块名(Models)需首字母大写,,并在名称后添加“Model”,如:ItemModel,CarModel
 3.控制器(Controllers)需首字母大写,,并在名称中添加“Controller”,如:ItemController,CarController
 4.视图(Views)部署结构为“控制器名/行为名”,如:item/view.php,car/buy.php 

上述的一些规则是为了能在程序中更好的进行互相的调用。接下来就开始真正的PHP MVC编程了。 

3.3 重定向 

将所有的数据请求都重定向 index.php 文件,在 todo 目录下新建一个 .htaccess 文件,文件内容为: 

<IfModule mod_rewrite.c>
  RewriteEngine On

  # 确保请求路径不是一个文件名或目录
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  # 重定向所有请求到 index.php?url=PATHNAME
  RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>

这样做的主要原因有:
 1.程序有一个单一的入口;
 2.除静态程序,其他所有程序都重定向到 index.php 上;
 3.可以用来生成利于SEO的URL,想要更好的配置URL,后期可能会需要URL路由,这里先不做介绍了。 

3.4 入口文件 

做完上面的操作,就应该知道我们需要做什么了,没错!在 public 目录下添加 index.php 文件,文件内容为:

 <?php

// 应用目录为当前目录
define('APP_PATH', __DIR__.'/');

// 开启调试模式
define('APP_DEBUG', true);

// 网站根URL
define('APP_URL', 'http://localhost/fastphp');

// 加载框架
require './fastphp/FastPHP.php';

注意,上面的PHP代码中,并没有添加PHP结束符号”?>”,这么做的主要原因是,对于只有 PHP 代码的文件,结束标志(“?>”)最好不存在,PHP自身并不需要结束符号,不添加结束符号可以很大程度上防止末尾被添加额外的注入内容,让程序更加安全。 

3.5 配置文件和主请求 

在 index.php 中,我们对 fastphp  文件夹下的 FastPHP.php 发起了请求,那么 FastPHP.php 这个启动文件中到底会包含哪些内容呢?

<?php

// 初始化常量
defined('FRAME_PATH') or define('FRAME_PATH', __DIR__.'/');
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');
defined('APP_DEBUG') or define('APP_DEBUG', false);
defined('CONFIG_PATH') or define('CONFIG_PATH', APP_PATH.'config/');
defined('RUNTIME_PATH') or define('RUNTIME_PATH', APP_PATH.'runtime/');

// 包含配置文件
require APP_PATH . 'config/config.php';

//包含核心框架类
require FRAME_PATH . 'Core.php';

// 实例化核心类
$fast = new Core;
$fast->run();

								 
			 
相关文章 大家在看