电脑维修 笔记本维修 手机维修 打印机维修 IT外包
24小时服务电话:0731-84688748  18229718750
地址:长沙市天心区青园街道友谊社区友谊小区A3栋15号

服务区域:湖南省政府方圆5公里内(友谊社区 青园小区 阳光嘉园 天一康园 湘超景园 国际公寓 HOPSCA写字楼 豪布斯卡 天城·泰祥苑 国检园 梦网景园 石人村金石·蓉园安置小区 鑫隆家园 湘诚嘉园 童话里 七星车城 华铁佳苑 巢之恋 鑫远杰座 鑫远华城 满庭芳 宽域 鑫天山水洲城 星语林名园 青园街道进湾子社区 白沙世纪佳园 长沙欧洲城 长沙奥林匹克花园 高升安置小区 湘府名邸 嘉尚君远 富景园 鑫源公寓 岳泰理想城 等等...)

ThinkPHP基础 第一章与第二章 - 全文内容:

显示技术博客列表

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

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