看完此文章快速上手thinkPHP5.0框架

一.灵活的路由

路由定义采用\think\Route类的rule方法注册,通常是在应用的路由配置文件application/route.php进行注册,格式是:

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');

use think\Route;
// 注册路由到index模块的News控制器的read操作
 Route::rule('new/:id','index/News/read');

二.获取前端请求的三种方式

  • 获取当前的请求信息,可以使用\think\Request类,
$request = Request::instance();

获取PARAM变量
PARAM变量是框架提供的用于自动识别GET、POST或者PUT请求的一种变量获取方式,是系统推荐的获取请求参数的方法,用法如下:

// 获取当前请求的name变量
Request::instance()->param('name');
// 获取当前请求的所有变量(经过过滤)
Request::instance()->param();
// 获取当前请求的所有变量(原始数据)
Request::instance()->param(false);
// 获取当前请求的所有变量(包含上传文件)
Request::instance()->param(true);

获取GET变量

Request::instance()->get('id'); // 获取某个get变量
Request::instance()->get('name'); // 获取get变量
Request::instance()->get(); // 获取所有的get变量(经过过滤的数组)
Request::instance()->get(false); // 获取所有的get变量(原始数组)

获取POST变量

Request::instance()->post('name'); // 获取某个post变量
Request::instance()->post(); // 获取经过过滤的全部post变量
Request::instance()->post(false); // 获取全部的post原始变量

获取Cookie变量

Request::instance()->cookie('user_id'); // 获取某个cookie变量
Request::instance()->cookie(); // 获取全部的cookie变量
  • 自动注入请求对象
    在控制器的架构方法中会自动注入当前请求对象
    操作方法注入
namespace app\index\controller;

use think\Request;

class Index
{

    public function hello(Request $request)
    {
        return 'Hello,' . $request->param('name') . '!';
    }
    
}
  • 助手函数
    获取PARAM变量
input('param.name');
input('param.');
或者
input('name');
input('');

获取GET变量

input('get.id');
input('get.name');
input('get.');

获取POST变量

input('post.name');
input('post.');

三.模型

orm对象关系映射,可以把数据表想象为一个类,字段为类的属性,对象就是表中的一个记录。
  1. 调用方式
  • 静态调用
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();
  • 实例化对象调用
// 实例化模型
$user = new User;
$user->name= 'thinkphp';
$user->save();

推荐方式是静态调用,我认为符合面向对象的编程思想,类对应一张表,每个对象就是表中一个记录,类来获取一条记录相当于表中获取一条记录。
获取单个数据的方法

 取出主键为1的数据
$user = User::get(1);
echo $user->name;
  1. 获取器和修改器
    获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用:
class User extends Model 
{
    public function getStatusAttr($value)
    {
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$value];
    }
}

数据表的字段会自动转换为驼峰法,一般status字段的值采用数值类型,我们可以通过获取器定义,自动转换为字符串描述。

$user = User::get(1);
echo $user->status; // 例如输出“正常”

修改器的作用是可以在数据赋值的时候自动进行转换处理,例如:

class User extends Model 
{
    public function setNameAttr($value)
    {
        return strtolower($value);
    }
}

如下代码实际保存到数据库中的时候会转为小写

$user = new User();
$user->name = 'THINKPHP';
$user->save();
echo $user->name; // thinkphp
  1. 一对一关联

hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型');

namespace app\index\model;

use think\Model;

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('Profile');
    }
}

一对多关联

hasMany('关联模型名','外键名','主键名',['模型别名定义']);
例如一篇文章可以有多个评论

hasMany('Comment');
    }
}

多对多关联

belongsToMany('关联模型','中间表','外键','关联键');
例如,我们的用户和角色就是一种多对多的关系,我们在User模型定义如下:

belongsToMany('Role');
    }
}

四.日志

  1. 日志初始化
    在使用日志记录之前,首先需要初始化日志类,指定当前使用的日志记录方式。
Log::init([
    'type'  =>  'File',
    'path'  =>  APP_PATH.'logs/'
]);

上面在日志初始化的时候,指定了文件方式记录日志,并且日志保存目录为APP_PATH.'logs/'

  1. 日志级别
    ThinkPHP对系统的日志按照级别来分类,并且这个日志级别完全可以自己定义,系统内部使用的级别包括:

    • log 常规日志,用于记录日志
    • error 错误,一般会导致程序的终止
    • notice 警告,程序可以运行但是还不够完美的错误
    • info 信息,程序输出信息
    • debug 调试,用于调试信息
    • sql SQL语句,用于SQL记录,只在数据库的调试模式开启时有效
Log::error('错误信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('错误信息','error');
Log::record('日志信息','info');

还封装了一个助手函数用于日志记录,例如:

trace('错误信息','error');
trace('日志信息','info');

也支持指定级别日志的输入,需要配置信息:

'log'   => [
    'type'  => 'File',
    // 日志记录级别,使用数组表示
    'level' => ['error'],
],

你可能感兴趣的:(看完此文章快速上手thinkPHP5.0框架)