您的当前位置:首页正文

ThinkPHP5.0学习知识点

2024-11-07 来源:个人技术集锦

认识MVC结构

MVC结构:指的是有三层结构,model(模型层),用来提供一些基础的数据库调用方法以及一些访问数据库的捷径,view层用来提供一个视觉界面交互,controller用来提供网页入口以及面向对象操作的方法

TP5.0的模块设计

5.0版本对模块设计进行了优化,默认采用了多模块的架构,并且支持单一模块设计,所有模块的命名空间均以APP作为根命名空间(可配置更改)

<?php

namespace app\index\controller;//定义命名空间在当前所在的目录


class Index //定义当前的类名,类名需要和当前的文件名保持一致
{
      public function index()//定义当前类下的方法名称
      {
            return "this is index index index";
      }
}

?>

那么在以上的命名空间,我们编写这个控制器的方法后,通过URLhttp://localhost/tp5/public/ 访问即得到如上的结果

common通用类的使用方法

首先编写common模块下的controller下的index方法

<?php


namespace app\common\controller;


class Index
{
      public function index()
      {
            return "common index index";
      }
}

然后在index模块下使用

use app\common\controller\Index as commonIndex;

使用之后进行对象的new,new完之后直接使用方法

      public function common()
      {
            $common = new commonIndex();
            return $common->index();
      }

那么从这里可以知道:当大量的通用方法被调用的时候,可以在common下编写对应的类和方法,直接use引用,通过new出对象再使用方法的方式来进行,或者是另外一种继承当前对象的方法来调用this指针来使用方法

<?php


namespace app\index\controller;
use app\common\controller\User as commonUser;

class User extends commonUser
{
      public function demo()
      {
            return $this->showName("Lumxi");
      }
}

config类和config助手函数

      public function index()//定义当前类下的方法名称
      {
            $res = Config::get();
            dump($res);
      }
      public function index()//定义当前类下的方法名称
      {
            $res = config();
            dump($res);
      }

获取单个参数得方法:

      public function index()//定义当前类下的方法名称
      {
            $res = Config::get('app_namespace');
            dump($res);
      }

入口文件

ThinkPHP5.0框架下的入口文件方式为单入口文件,应用程序所有的http请求都由某一个文件接收并且由这个文件转发到功能代码中去

路由

在函数中边编写函数方法

      public function info($id)
      {
            return "{$id}";
      }

因此需要一个id变量,通过URL传入id变量,如果直接传递,按照URL的规则,就是index/index/info/5,这样一大串非常不利于我们的开发,于是我们需要借用路由,首先开启路由配置,开启后再confi文件夹下创建route.php,传入以下配置数组。

<?php
return [
  'news/:id'=>'index/index/info'
];
?>

值得一提的是:当开启路由后,进行URL数组解析会优先解析路由.

请求对象 Request

请求对象的获取

有三种方法能够获取到对象
第一种方法是直接用request获取到实例对象

      public function index()
      {
            $request = request();
            dump($request);
      }

第二种方法是直接用Think下的request的类

use think\Request;//首先启用此类

接着就可以直接通过此函数获取到实例

$request=Request::instance();

第三种方法是直接对对象进行注入

      public function index(Request $request)
      {
            //$request=Request::instance();
            //$request = request();
            dump($request);
      }

请求对象参数的获取

获取浏览器输入框的值

      public function index(Request $request)
      {
            dump($request->domain());
      }

获取路径

      public function index(Request $request)
      {
            dump($request->pathinfo());
            dump($request->path());
      }

判断请求类型

      public function index(Request $request)
      {
            dump($request->method());
            dump($request->isGet());
            dump($request->isPost());
            dump($request->isAjax());
      }

获取请求的参数

知识点补充:
session是指一个会话:通过为每个独立用户分配唯一的会话 ID,可以实现针对不同用户分别存储数据的功能。 会话通常被用来在多个页面请求之间保存及共享信息。 一般来说,会话 ID 通过 cookie 的方式发送到浏览器,并且在服务器端也是通过会话 ID 来取回会话中的数据。 如果请求中不包含会话 ID 信息,那么 PHP 就会创建一个新的会话,并为新创建的会话分配新的 ID。
会话的工作流程很简单。当开始一个会话时,PHP 会尝试从请求中查找会话 ID (通常通过会话 cookie), 如果请求中不包含会话 ID 信息,PHP 就会创建一个新的会话。 会话开始之后,PHP 就会将会话中的数据设置到 $_SESSION 变量中。 当 PHP 停止的时候,它会自动读取 $_SESSION 中的内容,并将其进行序列化, 然后发送给会话保存管理器来进行保存。
cookie:cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
如何创建 Cookie?
setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 标签之前。

语法
setcookie(name, value, expire, path, domain);

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

在下面的实例中,我们取回了名为 “user” 的 cookie 的值,并把它显示在了页面上:

      public function index(Request $request)
      {
            dump($request->get());//注意一个问题,在这个get方法里面不能得到pathinfo的参数
            dump($request->param());//而这个方法就可以得到pathinfo里面的参数
            dump($request->session());
            dump($request->cookie());
            dump($request->param('type'));//单个参数的获取方式
      }

获取模块 控制器 操作

      public function index(Request $request)
      {
            dump($request->module());
            dump($request->controller());
            dump($request->action());
      }

助手函数 input

input函数的作用主要是协助开发者获取请求中的参数,下面介绍其用法
由于input具有一个特性:会将post和get两种方法的参数合并,这有时候会导致我们的数据丢失,于是有以下方法进行获取特定的参数

      public function index(Request $request)
      {
            dump($request->param());
            $res = input('get.id');
            dump($res);
      }

input也可以为不存在的值设置一个defualt值,同时在参数表的第三个位置中也可以设置一个intval(例如)这样的默认类型转换.
注意input方法虽然方便,但是会存在一个 "if(alive)"的问题,所以我们必须好好利用defualt这个特性来保护我们的程序

响应对象response

http请求每个请求都会对应一个响应,在ThinkPHP中提供了方法对这个响应进行控制。

模板循环标签

控制器方法设置

<?php

namespace app\index\controller;
use think\Controller;
use think\view;

class Index extends Controller
{
      public function index()
      {
            $list = [
                'user1'=>[
                    'username'=>'Lumxi',
                      'password'=>'123'
                ],
                  'user2'=>[
                      'username'=>'sqio',
                        'password'=>'123'
                  ],
                  'user3'=>[
                      'username'=>'leon',
                      'password'=>'123'
                  ],
            ];
            $this->assign('list',$list);
            return $this->fetch();
      }
}

html文件交互

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{volist name='list' id='vo' empty='这里没有数据'}
  <p>{$i}:{$vo.username}</p>
{/volist}
</body>
</html>

foreach

   {foreach $list as $val}
     <p>{$val.username}{$val.password}</p>
   {/foreach}
Top