隐藏index.php
官方默认的 .htaccess文件
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
如果你使用的apache版本使用上面的方式无法正常隐藏index.php,可以尝试使用下面的方式配置.htaccess文件:
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
如果是Nginx环境的话,可以在Nginx.conf中添加:
隐藏public目录
如果你暂时不想设置vhost 或者还不是特别了解如何设置,可以先把入口文件移动到框架的ROOT_PATH
目录,并更改入口文件中的APP_PATH 和框架入口文件的位置(这里顺便展示下如何更改相关目录名称),
index.php 文件内容如下:
// 定义应用目录为apps
define('APP_PATH', DIR . '/apps/');
// 加载框架引导文件
require DIR . '/think/start.php';
这样最终的应用目录结构如下:
tp5
├─application 应用目录 是整个网站的核心
├─--|---index 前台目录
├─--|-----|---controller 控制器
├─--|-----|---model 数据模型
├─--|-----|---view 页面
├─--|---admin 后台目录
├─extend 扩展类库目录
├─public 静态资源和入口文件
├─--|---static 存放静态资源文件
├─--|---index.php 入口文件
├─runtime 运行临时目录
├─tests 测试目录
└─thinkphp tp框架的核心文件
├─--|---lang语言包
├─--|---library TP核心文件
├─--|---tpl 模板页面
├─vendor 第三方扩展目录
10、URL地址了解
http://www.tp.com/ index.php /Index /Index /index
域名 入口文件 前台 控制器 方法
11、了解TP的开发模式
0、开启调试模式P:\Workspace\tp5\application\config.php
// 应用调试模式 'app_debug' => true,
1、链接数据库P:\Workspace\tp5\application\database.php
// 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'zym', // 用户名 'username' => 'root', // 密码 'password' => '1234', // 端口
2、控制器中输写代码(P:\Workspace\tp5\application\index\controller\Index.php)
namespace app\index\controller; //引入系统数据类 use think\Db; //引入系统控制器类 use think\Controller; class Index extends Controller { public function index() { //从数据库中读取数据 $data=Db::table('user')->select(); //分配数据给页面 $this ->assign('data',$data); //加载页面 return view(); } }
3、页面中(P:\Workspace\tp5\application\index\view\index\index.html)
<table border="1" width="800px" align="center"> <tr> <th>id</th> <th>name</th> <th>pass</th> </tr> {volist name="data" id="value"} <tr> <td>{$value.id}</td> <td>{$value.name}</td> <td>{$value.pass}</td> {/volist} </table>
12、MVC模式
m model 模型
v view 视图
c controller 控制器
生活中的MVC
程序中的MVC
13、mvc在TP中如何体现
1、M model 模型
#P:\Workspace\tp5\application\index\model
作用:执行数据库相关处理
2、V view 视图
#P:\Workspace\tp5\application\index\view
作用:其实就是页面
3、C Controller 控制器
#P:\Workspace\tp5\application\index\controller
作用:主要负责整个逻辑运转
14、MVC的变形
1、MC模型和控制器
#主要作用:用于接口开发
只需要返回数据json或XML
2、VC 视图和控制器
#主要作用:单页面的网站
上次复习:
1、如何安装
1、源代码安装
2、GIT安装
3、Composer安装
2、MVC模式
M model 数据模型
#数据库相关的处理
V view 视图
#页面
C controller 控制器
#控制器就是这个网站的逻辑和流程
3、目录结构
===========================
今日学习
1、TP架构的概述
ThinkPHP使用了MVC模式,它强制性的使应用程序输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
2、URL解析
http:// www.tp.com/index.php/Index/Index/index
协议 域名 入口文件 模块 控制器 方法
3、入口文件
1、文件地址
tp5\public\index.php
2、作用:
负责整个TP的请求
4、应用
1、应用地址
tp5\application
2、作用:
一个应用代表一个网站
5、模块(以前台为例)
1、模块地址
\tp5\application\index
2、作用:
网站所有的前台相关都与其有关
3、新建后台模块
a、在应用 目录下(\tp5\application)新建admin目录
b、在admin目录下新建model、view和controller
c、在controller目录下新建Index控制器(Index.php)
d、在Index.php中书写代码:
<?php //声明命名空间 namespace app\admin\controller; //声明控制器 class index { public function index(){ return "我是后台的控制器"; } } ?>
6、控制器
1、控制器目录
\tp5\application\index\controller
2、作用:
书写业务逻辑
3、新建控制器(以前台为例)
a、在前台控制器目录下(\tp5\application\index\controller)下新建user.php
b、在控制器中书写代码
<?php //声名命名空间 namespace app\index\controller; //声明控制器 class User{ //index 方法 public function index(){ return "我是前台user控制器中的index方法"; } } ?>
c、地址栏访问:
http://www.tp.com/index.php/Index/User/index
d、注意:
1、控制器文件名必须首字母大写,
2、控制器中必须声名命名空间
3、控制器中类名必须和文件名一致
7、操作(方法)
1、操作地址
操作一般都在控制器的文件中
2、新建一个操作(以前台Index控制器为例)
1、打开前台Index控制器(P:\Workspace\tp5\application\index\controller\Index.php)
2、在控制器中新建test方法
public function test(){ return "我是用户自己创建的方法"; }
3、地址栏访问
http://www.tp.com/index.php/Index/Index/test
8、模型(数据模型)
1、数据模型地址
P:\Workspace\tp5\application\index\mode
2、作用:
负责数据库相关处理
9、视图(页面)
1、视图地址
P:\Workspace\tp5\application\index\view
2、作用:
其实就是网站页面
10、命名空间
1、与目录有关(以前台 Index控制器命名空间为例)
namespace app\index\controller;
P:\Workspace\tp5\application\index\controller\Index.php
11、跨控制器调用
1、使用命名空间
$model=new \app\admin\controller\Index;
echo $model->index();
2、使用use
use \app\admin\controller\Index as AdminIndex;
$model=new AdminIndex();
echo $model->index();
3、系统方法
#系统方法一般在(P:\Workspace\tp5\thinkphp\helper.php)
$model=controller('admin/Index');
echo $model->index();
12、调用方法
1、调用当前控制器的test方法
1、使用面向的技术
echo $this->test();
echo self::test();
echo Index::test();
2、使用系统方法
echo action("test");
2、调用user控制器下的index方法
1、命名空间
$model=new \app\index\controller\User;
echo $model->index();
2、使用系统方法
echo action('User\index');
3、调用后台模块下Index控制器index 方法
1、命名空间
$model=new \app\admin\controller\Index;
echo $model->index();
2、使用系统方法
echo action('admin/Index/index');
13、主要分析TP执行流程
1、入口文件(P:\Workspace\tp5\public\index.php)
作用:
1) 定义常量
2)加载框架引导目录
2、加载框架的引导目录(P:\Workspace\tp5\thinkphp\start.php)
作用:
1)引导基础文件
2)对应用进行运转
3、加载框架的基础引导文件(P:\Workspace\tp5\thinkphp\base.php)
1)加载系统常量
2)引入了loader.php类(P:\Workspace\tp5\thinkphp\library\think\Loader.php)
3)引入环境变量
4)注册自动加载机制
5)注册异常处理机制(P:\Workspace\tp5\thinkphp\library\think\Error.php)
6)加载惯例配置(P:\Workspace\tp5\thinkphp\convention.php)
4、运行应用(P:\Workspace\tp5\thinkphp\library\think\App.php)下的run方法;
1、第一步:加载了当前控制器中的initCommon()方法
加载命名空间
2、第二步:加载当前控制器中的init()方法
1、加载各种配置文件;
2、加载公共文件;
3、加载语言包
3、第三步:设置时间区域
4、第四步:加载当前控制器routeCheck()方法 路由检测
5、第五步:调用控制器中exec()方法
根据用户的请求分发处理
6、第六步:根据不同的请求类型加载对应文件 module方法
加载到对应的控制器和对应方法
5、响应输出
用户看到的所有界面就加载出来了