ThinkPHP的运行流程-2
Thinkphp为了提高编译的效率,第一次运行的时候thinkphp会把文件全部编译到temp目录下的~runtime.php文件,在第二次运行的时候会直接读取这个文件。所以我们在线下自己写代码测试的时候如果没有开启了这个调试模式的话,那么就没办法得到及时的反应。所以我们要将其开启。
直接在index.php中添加如下代码即可开启:
Define(‘APP_DEBUG’,TRUE);
访问:http://127.0.0.1/
其实是访问了http://127.0.0.1/index.php/index/index# 第一个index称之为模块,后面的index称之为方法
第一个index.php顾名思义是文件
第二个index是访问了Lib\Action目录下的index方法
比如换一个:http://127.0.0.1/index.php/index/add
则是访问了index下的add方法。
该案例完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { public function index(){ echo "劝君珍惜少年时,劝君莫惜金缕衣!" ; } public function del(){ echo "this is index of del" ; } public function add(){ echo "this is del of add" ; } } |
但是倘若我是这样的代码:
1
2
3
4
5
6
7
|
<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { public function test(){ echo "我叫:{$_GET['name']},我今年{$_GET['age']}岁。" ; } } |
那么该如何访问呢?
答案:http://127.0.0.1/index.php/index/test/name/张三/age/10
依旧以变量然后斜杠然后再是值。所以很多时候sql注入的时候我们需要对那部分是key那部分是value区分清除。
$this->display输出法。
现在将代码换成
然后我们访问的时候就会出现这样的效果:http://127.0.0.1/index.php/Index/test
:(
无法加载模块:test
错误位置
FILE: D:\wamp\www\thinkphp\Common\functions.php LINE: 112
PS:APP_DEBUG要开启。否则无法做到实时,就不会显示出了。
显示是没办法加载模块的
然后访问:http://127.0.0.1/index.php/Index/test Index首字母是大写!然后显示是:
:(
模板不存在[./index/Tpl/Index/test.html]
错误位置
FILE: D:\wamp\www\thinkphp\Lib\Core\View.class.php LINE: 115
这时候就需要用到一个视图的了也就是MVC框架中的View了。
然后访问Tpl目录。下面是没有任何文件夹的,我们建立一个Index文件夹。需要首字母大写!
然后建立一个test.html的html文件,这里的test文件名也就是下图中方法的方法名。也就是说你定义的方法名就是你的文件名。
PS:html代码如下
1
2
3
4
5
6
|
<html> <head><title>test</title></head> <body> <h1>Con</h1> </body> </html> |
然后访问:http://127.0.0.1/index.php/Index/test的时候就可以了。
这就是通过$this来实现视图效果。
ThinkPHP的运行流程-2的更多相关文章
- 跟着百度学习php之ThinkPHP的运行流程-2
Thinkphp为了提高编译的效率,第一次运行的时候thinkphp会把文件全部编译到temp目录下的~runtime.php文件,在第二次运行的时候会直接读取这个文件.所以我们在线下自己写代码测试的 ...
- ThinkPHP的运行流程-1
我在index\Lib\Action\目录下新建了一个ShowAction.class.php文件.ps:该目录是控制器的目录. 然后这个文件中继承了action这个类.代码如下: 1 2 3 4 5 ...
- 跟着百度学习php之ThinkPHP的运行流程-1
我在index\Lib\Action\目录下新建了一个ShowAction.class.php文件.ps:该目录是控制器的目录. 然后这个文件中继承了action这个类.代码如下: <?php ...
- react-native start 运行流程
在CMD下键入 C:\Node_JS\MyAwesomeProject>react-native start 运行流程: C:\Users\Grart\AppData\Roaming\npm\r ...
- 1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解
本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...
- java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)
JAVA里面的程序运行流程分三大类: 1,顺序结构:顺序结构就是依次执行每一行代码 2,分支结构:分支结构就是按不同的条件进行分支 3,循环结构:一段代码依条件进行循环执行. 其中,分支结构有两大类: ...
- servlet运行流程
servlet运行流程 (2013-06-19 19:16:43) 转载▼ 首先Servlet被部署到Web容器中,当客户端发送调用这个Servlet的请求到达Web容器时,Web容器会先判 ...
- [原创]java WEB学习笔记70:Struts2 学习之路-- struts2拦截器源码分析,运行流程
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2框架的运行流程
Struts2的运行流程 1.浏览器发送请求到控制器(如Struts2中的核心控制器StrutsPrepareAndExecuteFilter): 2.控制器调用Action的execute方法: 3 ...
随机推荐
- Building simple plug-ins system for ASP.NET Core(转)
Recently I built plug-ins support to my TemperatureStation IoT solution web site. The code for .NET ...
- 【linux使用】bash shell命令行常用快捷键
移动: Ctrl + A: 移动到当前编辑的命令行首, Ctrl + E: 移动到当前编辑的命令行尾, Ctrl + F 或 ->:按字符右移(往命令行尾部方向,前移) Ctrl + B 或 & ...
- 【bzoj2257】[Jsoi2009]瓶子和燃料 扩展裴蜀定理+STL-map
题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.从中选出 $k$ 个瓶子,使得能够通过这 $k$ 个瓶子凑出 ...
- 【JavaScript&jQuery】省市区三级联动
HTML: <%@page import="com.mysql.jdbc.Connection"%> <%@ page language="java&q ...
- 【JavaScript&jQuery】轮展图
用bootstrap实现轮展图和用Jquery自定义轮展图两种 1.使用bootstrap插件 效果图: 用一个超简单的方法,那就是用bootstrap的插件,什么?不懂bootstrap?没关系 ...
- Codeforces Round #447 (Div. 2) 题解
A.很水的题目,3个for循环就可以了 #include <iostream> #include <cstdio> #include <cstring> using ...
- Spring Batch @SpringBatchTest 注解
Spring Batch 提供了一些非常有用的工具类(例如 JobLauncherTestUtils 和 JobRepositoryTestUtils)和测试执行监听器(StepScopeTestEx ...
- Linux之多线程20160705
简单介绍一下多线程的API,线程的概念类似与一个任务或者说一个函数,线程一旦被创建就会运行,具体使用方法可以在Linux下使用man 命令查看: pthread_t:线程ID pthread_attr ...
- ps裁剪一寸照片及换背景色
1.打开ps,把图片拖进去编辑 2.选魔棒工具,在途中选中背景色,鼠标右键,选选择反向 效果如下: 3.按 快捷键 ctrl + j 可以在右侧看到新建出了一个图层 4.选文件,新建,填写长宽,如果 ...
- hibernate中evict()和clear()的区别
session.evict(obj):会把指定的缓冲对象进行清除: session.clear():把缓冲区内的全部对象清除,但不包括操作中的对象. hibernate执行的顺序如下: (1)生成一个 ...