天天看點

ThinkPHP5學習筆記(6)請求和響應

Request請求對象和Response響應對象

$_GET、$_POST、$_REQUEST、$_COOKIE

調用請求對象$request=Request::instance()

$this->request或request()->url();助手函數

input()助手函數

響應格式 json xml 模闆渲染

頁面跳轉 重定向

$this->success $this->error $this->redirect

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

<code>&lt;?php</code>

<code>namespace</code> <code>app\admin\controller;</code>

<code>use</code> <code>think\Request;</code>

<code>use</code> <code>think\Controller;</code>

<code>class</code> <code>Index </code><code>extends</code> <code>Controller</code>

<code>{</code>

<code>    </code><code>public</code> <code>function</code> <code>index()</code>

<code>    </code><code>{</code>

<code>        </code><code>return</code> <code>'&lt;style type="text/css"&gt;*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }&lt;/style&gt;&lt;div style="padding: 24px 48px;"&gt; &lt;h1&gt;:)&lt;/h1&gt;&lt;p&gt; ThinkPHP V5&lt;br/&gt;&lt;span style="font-size:30px"&gt;十年磨一劍 - 為API開發設計的高性能架構&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:22px;"&gt;[ V5.0 版本由 &lt;a href="http://www.qiniu.com" target="qiniu"&gt;七牛雲&lt;/a&gt; 獨家贊助釋出 ]&lt;/span&gt;&lt;/div&gt;&lt;script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"&gt;&lt;/script&gt;&lt;thinkad id="ad_bd568ce7058a1091"&gt;&lt;/thinkad&gt;'</code><code>;</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>function</code> <code>hello(){</code>

<code>        </code><code>//  擷取請求類型</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isGet()) {</code><code>echo</code> <code>'目前為GET請求'</code><code>;}</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPost())</code><code>echo</code> <code>'目前為POST請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPut()) </code><code>echo</code> <code>'目前為PUT請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isDelete()) </code><code>echo</code> <code>'目前為DELETE請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isAjax()) </code><code>echo</code> <code>'目前為AJAX請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPjax()) </code><code>echo</code> <code>'目前為PJAX請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isMobile()) </code><code>echo</code> <code>'目前為Mobile請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isHead()) </code><code>echo</code> <code>'目前為HEAD請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPatch()) </code><code>echo</code> <code>'目前為PATCH請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isOptions()) </code><code>echo</code> <code>'目前為OPTIONS請求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isCli()) </code><code>echo</code> <code>'目前為cli'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isCgi()) </code><code>echo</code> <code>'目前為cgi'</code><code>;</code>

<code>        </code><code>if</code><code>(request()-&gt;isGet()){</code><code>echo</code> <code>'目前為GET請求'</code><code>;};</code>

<code>        </code><code>// 擷取URL資訊</code>

<code>        </code><code>$request</code> <code>= Request::instance();</code>

<code>        </code><code>$request</code> <code>= request();</code>

<code>        </code><code>echo</code> <code>'domain:'</code><code>.</code><code>$request</code><code>-&gt;domain().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'file:'</code><code>.</code><code>$request</code><code>-&gt;baseFile().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'url:'</code><code>.</code><code>$request</code><code>-&gt;url().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'url with domain:'</code><code>.</code><code>$request</code><code>-&gt;url(true).</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'url without query:'</code><code>.</code><code>$request</code><code>-&gt;baseUrl().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'root:'</code><code>.</code><code>$request</code><code>-&gt;root().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'root with domain:'</code><code>.</code><code>$request</code><code>-&gt;root(true).</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'pathinfo:'</code><code>.</code><code>$request</code><code>-&gt;</code><code>pathinfo</code><code>().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'pathinfo:'</code><code>.</code><code>$request</code><code>-&gt;path().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'ext'</code><code>.</code><code>$request</code><code>-&gt;ext().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>// 設定/擷取 子產品/控制器/操作名稱</code>

<code>        </code><code>echo</code> <code>'目前子產品名稱是'</code><code>.</code><code>$request</code><code>-&gt;module();</code>

<code>        </code><code>echo</code> <code>'目前控制器名稱是'</code><code>.</code><code>$request</code><code>-&gt;controller();</code>

<code>        </code><code>echo</code> <code>'目前操作名稱是'</code><code>.</code><code>$request</code><code>-&gt;action();</code>

<code>        </code><code>Request::instance()-&gt;module(</code><code>'module_name'</code><code>);</code>

<code>        </code><code>// 擷取請求參數</code>

<code>        </code><code>echo</code> <code>'請求方法:'</code><code>.</code><code>$request</code><code>-&gt;method().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'資源類型:'</code><code>.</code><code>$request</code><code>-&gt;type().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'通路位址:'</code><code>.</code><code>$request</code><code>-&gt;ip().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'是否Ajax請求:'</code><code>.var_export(</code><code>$request</code><code>-&gt;isAjax(),true);</code>

<code>        </code><code>echo</code> <code>'請求參數:'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;param());</code>

<code>        </code><code>echo</code> <code>'請求參數:僅包含name'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;only([</code><code>'name'</code><code>]));</code>

<code>        </code><code>echo</code> <code>'請求參數:排除name'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;except([</code><code>'name'</code><code>]));</code>

<code>        </code><code>// 擷取路由和排程資訊</code>

<code>        </code><code>echo</code> <code>'路由資訊'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;route());</code>

<code>        </code><code>echo</code> <code>'排程資訊'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;dispatch());</code>

<code>        </code><code>// 設定請求資訊</code>

<code>        </code><code>$request</code><code>-&gt;root(</code><code>'index.php'</code><code>);</code>

<code>        </code><code>$request</code><code>-&gt;</code><code>pathinfo</code><code>(</code><code>'admin/index/hello'</code><code>);</code>

<code>    </code><code>public</code> <code>function</code> <code>hello2(){</code>

<code>        </code><code>$data</code> <code>= [</code><code>'name'</code><code>=&gt;</code><code>'thinkphp'</code><code>,</code><code>'status'</code><code>=&gt;1];</code>

<code>        </code><code>// 浏覽器安裝json插件</code>

<code>        </code><code>return</code> <code>json(</code><code>$data</code><code>);</code>

<code>        </code><code>// return xml($data);</code>

<code>        </code><code>// $this-&gt;assign('name','渲染 模闆');</code>

<code>        </code><code>// return $this-&gt;fetch();</code>

<code>    </code><code>// hello3</code>

<code>    </code><code>// 如果沒有 extends Controller 就寫:</code>

<code>    </code><code>// use \traits\controller\Jump;</code>

<code>    </code><code>public</code> <code>function</code> <code>hello3(){</code>

<code>        </code><code>$this</code><code>-&gt;success(</code><code>'正常的頁面跳轉'</code><code>,</code><code>'hello'</code><code>);</code>

<code>        </code><code>$this</code><code>-&gt;error(</code><code>'錯誤的頁面跳轉'</code><code>,</code><code>'hello2'</code><code>);</code>

<code>        </code><code>$this</code><code>-&gt;redirect(</code><code>'http://tp-shop.cn'</code><code>);</code>

<code>    </code><code>public</code> <code>function</code> <code>hello4(){</code>

<code>        </code><code>// 檢測變量是否設定</code>

<code>        </code><code>Request::instance()-&gt;has(</code><code>'id'</code><code>,</code><code>'get'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;has(</code><code>'name'</code><code>,</code><code>'post'</code><code>);</code>

<code>        </code><code>input(</code><code>'?get.id'</code><code>);</code>

<code>        </code><code>input(</code><code>'?post.name'</code><code>);</code>

<code>        </code><code>// 變量擷取</code>

<code>        </code><code>echo</code> <code>$request</code><code>-&gt;bind(</code><code>'user_name'</code><code>,</code><code>'張三'</code><code>);</code>

<code>        </code><code>echo</code> <code>$request</code><code>-&gt;user_name;</code>

<code>        </code><code>print_r(</code><code>$request</code><code>-&gt;param());</code>

<code>        </code><code>echo</code> <code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>$request</code><code>-&gt;param(</code><code>'name'</code><code>);</code>

<code>        </code><code>print_r(input());</code>

<code>        </code><code>echo</code> <code>input(</code><code>'name'</code><code>);</code>

<code>        </code><code>print_r(Request::instance()-&gt;param(false));</code>

<code>        </code><code>print_r(Request::instance()-&gt;param(true));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'param.name'</code><code>));</code>

<code>        </code><code>print_r (input(</code><code>'param.'</code><code>));</code>

<code>         </code><code>// 或</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r(</code><code>''</code><code>);</code>

<code>        </code><code>// 擷取GET變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;get(</code><code>'id'</code><code>));</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;get(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;get());    </code><code>// 擷取經過過濾的</code>

<code>        </code><code>print_r(Request::instance()-&gt;get(false));</code><code>//擷取原始變量</code>

<code>        </code><code>// 或</code>

<code>        </code><code>echo</code> <code>input(</code><code>'get.id'</code><code>);</code>

<code>        </code><code>echo</code> <code>input(</code><code>'get.name'</code><code>);</code>

<code>        </code><code>print_r(input(</code><code>'get.'</code><code>));</code>

<code>        </code><code>// 擷取POST變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;post(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;post());</code>

<code>        </code><code>print_r(Request::instance()-&gt;post(false));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'post.name'</code><code>));</code>

<code>        </code><code>print_r(</code><code>'post.'</code><code>);</code>

<code>        </code><code>// 擷取PUT變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;put(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r (Request::instance()-&gt;put());</code>

<code>        </code><code>print_r (Request::instance()-&gt;put(false));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'put.name'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'put.'</code><code>));</code>

<code>        </code><code>//  擷取REQUEST變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;request(</code><code>'id'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;request());</code>

<code>        </code><code>print_r(Request::instance()-&gt;request(false));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'request.id'</code><code>));</code>

<code>        </code><code>print_r (input(</code><code>'request.'</code><code>));</code>

<code>        </code><code>// 擷取SERVER變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;server(</code><code>'PHP_SELF'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;server());</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'server.PHP_SELF'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'server.'</code><code>));</code>

<code>        </code><code>//擷取SESSION變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;session(</code><code>'user_id'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;session());</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'session.user_id'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'session.'</code><code>));</code>

<code>        </code><code>// 擷取Cookie變量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;cookie(</code><code>'user_id'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;cookie());</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'cookie.user_id'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'cookie.'</code><code>));</code>

<code>        </code><code>// 變量過濾</code>

<code>        </code><code>// 在application/config.php中設定</code>

<code>        </code><code>// 'default_filter'=&gt;'htmlspecialchars';</code>

<code>        </code><code>Request::instance()-&gt;filter(</code><code>'htmlspecialchars'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;filter([</code><code>'strip_tags'</code><code>,</code><code>'htmlspecialchars'</code><code>]);</code>

<code>        </code><code>// 在添加變量的時候添加過濾方法</code>

<code>        </code><code>Request::instance()-&gt;get(</code><code>'name'</code><code>,</code><code>''</code><code>,</code><code>'htmlspecialchars'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;param(</code><code>'username'</code><code>,</code><code>''</code><code>,</code><code>'strip_tags'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;post(</code><code>'name'</code><code>,</code><code>''</code><code>,</code><code>'org\Filter::safeHtml'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;param(</code><code>'username'</code><code>,</code><code>''</code><code>,</code><code>'strip_tags,strtolower'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;post(</code><code>'email'</code><code>,</code><code>''</code><code>,</code><code>'FILTER_VALIDATE_EMAIL'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;post(</code><code>'email'</code><code>,</code><code>''</code><code>,</code><code>'email'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;get(</code><code>'name'</code><code>,</code><code>''</code><code>,false);</code>

<code>        </code><code>// 擷取部分變量</code>

<code>        </code><code>Request::instance()-&gt;only(</code><code>'id,name'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;only([</code><code>'id'</code><code>,</code><code>'name'</code><code>]);</code>

<code>        </code><code>Request::instance()-&gt;only([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'get'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;only([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'post'</code><code>);</code>

<code>        </code><code>// 排除部分變量</code>

<code>        </code><code>Request::instance()-&gt;except(</code><code>'id,name'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;except([</code><code>'id'</code><code>,</code><code>'name'</code><code>]);</code>

<code>        </code><code>Request::instance()-&gt;except([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'get'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;except([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'post'</code><code>);</code>

<code>        </code><code>//  變量修飾符</code>

<code>        </code><code>input(</code><code>'get.id/d'</code><code>);</code>

<code>        </code><code>input(</code><code>'get.name/s'</code><code>);</code>

<code>        </code><code>input(</code><code>'get.ids/a'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;get(</code><code>'id/d'</code><code>);</code>

<code>    </code><code>public</code> <code>function</code> <code>hello5(){</code>

<code>        </code><code>Request::instance()-&gt;get([</code><code>'id'</code><code>=&gt;10]);</code>

<code>        </code><code>Request::instance()-&gt;post([</code><code>'name'</code><code>=&gt;</code><code>'thinkphp'</code><code>]);</code>

<code>        </code><code>// 盡量避免直接修改$_GET,$_POST,也不能直接修改param變量,下面寫法無效</code>

<code>        </code><code>// Request::instance()-&gt;param(['id'=&gt;10]);</code>

<code>}               </code>     本文轉自phpervip 51CTO部落格,原文連結:http://blog.51cto.com/phpervip/1931987,如需轉載請自行聯系原作者

<code></code>