Thinkphp3.2.3的学习Day1

文件结构

总的文件结构:

在这里插入图片描述

application目录下的文件结构:
在这里插入图片描述

Thinkphp目录下的文件结构
在这里插入图片描述
Conf目录下的文件结构:
在这里插入图片描述
补充:
在ThinkPHP中除了这个convention.php配置文件之外,还有其他的配置文件,但是convention.php这个文件是系统级别的配置文件,还有一个是应用级别的配置文件,最后还有一个分组级别的配置文件。
从作用范围上来说:
系统 > 应用 >分组
从优先级上说:
分组 > 应用 >系统

Library目录下的文件结构:
在这里插入图片描述

Think目录下的文件结构:
在这里插入图片描述

搭建:

在这里插入图片描述

只拉出这两个文件 然后通过浏览器进行访问
在这里插入图片描述
Appliation目录下的文件结构:
在这里插入图片描述
这里的’分组‘ 就是MVC中指的‘平台’

Home目录下的文件结构
在这里插入图片描述

说明:在首次运行index.php入口文件的时候才会去产生对应的目录结构。再次运行不会产生变化。

注意点
1.自动生成的Application:在首次运行index.php入口文件的时候会产生相应的目录结构,目录的名字取决于在index.php中定义的常量APP_PATH。
2.目录安全文件 :在自动生成的文件夹中都有一个空白的html文件,文件名叫做index.html,防止列出站点的文件结构。
3.类似于自动生成的Application这样的文件目录 原因是thinkphp的系统运行流程

在部署之后访问会看到一个笑脸,笑脸是怎么输出的?
默认分组/平台:Home
默认控制器:Index
默认方法:index
上述的默认值,可以在系统配置文件中找到:ThinkPHP\Conf\convention.php
在这里插入图片描述

Thinkphp的控制器

Application/Home/IndexController.class.php文件中展现的就是访问时相应的笑脸

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
    }
}

控制器结构代码:
总结步骤:
第一步:声明当前控制器(类)的命名空间;
第二步:引入父类控制器(类);
第三步:声明控制器(类)并且继承父类;
在这里插入图片描述

路由形式

路由:是指访问项目中具体某个方法的URL地址。
在ThinkPHP中系统提供了4种路由形式:
•普通形式路由
•Pathinfo形式路由
•Rewrite形式路由
•兼容形式路由

1、普通形式路由(get形式路由)
路由形式:http://网址/入库文件?m=分组名&c=控制器名&a=方法名&参数名=参数值
例如:访问Home分组下的User控制器中的test方法,并且传递一个参数,id=1
http://1006.com/index.php?m=Home&c=User&a=test&id=1

问题:URL传递的任何东西都会在URL地址栏中显示出来,既不安全也不好看。

2、pathinfo路由形式(默认)
路由形式:http://网址/入口文件/分组名/控制器名/方法/参数名1/参数值1/参数名2/参数值2
例如:访问Home分组下的User控制器中的test方法,并且传递一个参数,id=1
http://1006.com/index.php/Home/User/test/id/100

3、兼容路由形式
路由形式:http://网址/入口文件?s=/分组名/控制器名/方法名/参数名1/参数值1
问题:兼容路由形式有几个参数?
答:上述路由形式只有1个参数,参数名是s,等于号后面的都是s参数的值
例如:访问Home分组下的User控制器中的test方法,并且传递一个参数,id=10086
http://1006.com/index.php?s=/Home/User/test/id/10086

这里还有种rewrite路由形式就不介绍了 大家可以去了解下

关于ThinkPHP中路由形式的配置:

在这里插入图片描述

特别说明:路由形式的配置值,不影响我们在地址栏中直接输入其他形式路由访问。该配置项的值影响的是ThinkPHP系统封装的URL组装函数(U函数)的生成url地址的形式。

就是我们在浏览器中url的路由访问不管是哪种都可以访问的到,这里设置影响的只是ThinkPHP系统封装的URL组装函数(U函数)的生成url地址的形式。 (一种形式而已)

分组

例如在刚部署好的ThinkPHP系统中Home目录就是一个分组目录。后期如果需要使用更多的分组,则需要自己去创建分组

分组指的其实也就是平台的意思

如何去创建分组?

步骤:参考Home分组的目录结构,重新创建一个新的目录,在其中依照Home中的结构,创建对应的目录即可。

第一步:创建一个分组的目录,目录与Home目录同级
在这里插入图片描述
第二步:创建Admin目录中的文件结构
在这里插入图片描述
分组创建好之后,可以在Admin分组中编写一个控制器,然后编写方法进行测试访问

控制器中的跳转

1、URL组装
Url组装就是根据某个规则,来组成一个url地址,这个功能就叫做url组装。
在ThinkPHP中,系统提供了一个封装的函数来处理url的组装,这个方法叫做U方法。
U方法是系统提供的快速方法,除了U方法这样大写字母的方法之外,还有一些其他的快速方法如:A、B、C、D、E、F、G、I、M、R、S。这些方法都定义在系统的函数库文件中(functions.php)
在这里插入图片描述
U语法格式:
U(‘URL路径’,参数数组);
例如:要使用U方法组装出当前控制器下index方法地址,则可以写成
U(‘index’);
在这里插入图片描述
再例如:使用U方法组装出另外一个控制器Index中的index的地址,则可以写成:
U(‘Index/index’);
在这里插入图片描述

如果需要给指定的页面添加参数,比如给Index控制器下的index方法传递一个id=100
U(‘Index/index’,array(‘id’ => 100));
在这里插入图片描述
总结出一个通用的格式:
U(‘[分组名/控制器名/]方法名’,array(‘参数名1’ => 参数值1,’参数名2’ => 参数值2));

2、系统跳转方法
在ThinkPHP中系统有2个跳转方法,分别是成功跳转和失败跳转:
成功:
$this -> success(跳转提示,跳转地址,等待时间);
失败:
$this -> error(跳转提示,跳转地址,等待时间);

跳转提示参数必须要有,后面的地址和时间可以没有,如果没有指定跳转地址,则跳转到上一页。

在实际使用的时候,成功跳转会看到一个笑脸:

<?php 	
namespace Admin\Controller;
use Think\Controller;

class TestController extends Controller{
	public function test(){
		$this->success('OK','Index/index',10);

	}
}

在这里插入图片描述

说明:上述案例中使用success和error方法在当前的控制器中并没有定义,其是父类控制器中已经定义好的方法,由于当前控制器继承了父类,所以可以直接使用。

ThinkPHP中的视图(重点)

1、什么是视图
视图就是MVC三大组成部分中V(View),主要是负责信息的输出和展示。
2、视图的创建
创建的位置需要是在分组目录下的View目录下与控制器同名的目录中。例如Test控制器中的login方法,需要有一个模版,则该模版文件login.html需要放到View/Test/login.html

例如:创建Test控制器的test方法模版 在相应的分组下的View中创建相应的控制器名的文件夹中创建相应名的视图文件
在这里插入图片描述
3、视图的展示
在smarty中展示模版使用的方法是display,在ThinkPHP中同样也是display方法。Display在ThinkPHP中的语法格式:
$this -> display(); 展示当前控制器下与当前请求方法名称一致的模版文件
$this -> display(‘模版文件名[不带后缀]’); 展示当前控制器下的指定模版文件
$this -> display(‘View目录下的目录名/模版文件名[不带后缀]’); 展示指定控制器目录下的指定模版文件

在Test控制器中的test方法中展示test.html (对应的控制器下展示相同方法的视图文件)
在这里插入图片描述
在Test控制器中的test1方法中展示test.html (相同的控制器下不同方法 展示一个相同控制器下的不同视图文件 )
在这里插入图片描述
在Test控制器中的test2方法展示View/Demo/test.html(在一个控制器下的方法展示不同控制器下的的某个方法的视图文件)
在这里插入图片描述

4、变量分配(初阶)

在ThinkPHP中系统封装好了一个变量的分配方法,这个方法叫做assign。具体语法:
$this -> assign(‘模版中变量名’,KaTeX parse error: Expected '}', got 'EOF' at end of input: …的展示基本变量方法如下: {模版中的变量名}

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
{$var}
</body>
</html>

5、变量分隔符
在ThinkPHP中默认的变量左右分割符是{和},其是可以被更改的,可以在配置文件中找到具体的配置项:
在这里插入图片描述

6、模版常量替换机制
在实际开发的时候会出现一个这样的问题:在引入图片、css、js文件的时候,往往需要写一些比较复杂的路径,所以这个时候我们比较希望能有一些特殊的常量将很长很复杂的路径简单化,这个时候可以考拉使用模版常量替换的机制。

在ThinkPHP中系统默认给我们提供以下几个常用的模版常量:
MODULE:表示从域名后面开始一直到分组名结束的路由
CONTROLLER:表示从域名后面开始一直到控制器结束的路由
ACTION:表示从域名后面开始一直到方法名结束的路由
PUBLIC:站点根目录下的Public目录的路由
SELF:表示从域名后面开始一直到路由的最后(如果没有参数,则__SELF__和__ACTION__所表达的内容是一样的)

在这里插入图片描述
为什么上述的几个常量就可以表示上面输出的这些路由呢?
答:在ThinkPHP中“模版常量”是通过模版内容替换机制来实现的,并非是常量的定义。替换机制可以查看行为文件ContentReplace.Behaviour.class.php
在这里插入图片描述
其模版常量的实现核心就是字符串的替换。
为了后期使用的方便,我们可以在配置文件中定义一个自定义的模版常量:
说明:在开发的时候,不到万不得已不要去修改系统配置文件。可以将需要修改的配置项在分组/应用级别的配置文件中去定义:
在这里插入图片描述

测试:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值