ThinkPHP基础 第一章与第二章
ThinkPHP    2019-05-04 18:36:33    17    0    0
maker   ThinkPHP

隐藏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中添加:
Nginx隐藏index.php的配置代码截图

隐藏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、响应输出

               用户看到的所有界面就加载出来了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pre: win10 1903(32位/64位)的最低配置要求

Next: nginx强制使用https访问(http跳转到https)使用配置conf配置文件实现

17
Table of content