2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > thinking php 教程 Thinkphp基础教程

thinking php 教程 Thinkphp基础教程

时间:2024-08-23 11:42:22

相关推荐

thinking php 教程 Thinkphp基础教程

写了点tp5的基础教程

创建类,命名空间,use

namespace app\index\controller; //命名空间

//这些use都是后面的方法用的,可以暂时屏蔽

use think\Db;

use app\index\controller\User as UserModel;

use app\index\controller\UserAddress as UserAddressModel;

use think\facade\Request;

use think\facade\Validate; //use导入类、函数和常量

//创建一个类

class Index

{

///index.php是入口文件,默认访问index模块 - index类 - index方法

//其实访问的是:/index.php/index/index/index

//是本地域名

public function index()

{

return '首页'; //return 是返回

}

//访问:/index.php/index/index/hello

public function hello($name = 'ThinkPHP5')

{

echo 'hello,' . $name; //echo 是输出,用于输出显示字符串

}

}

获取请求参数

//访问:/index.php/index/index/one

//带3个参数的访问:/index.php/index/index/one?id=1&name=jack&age=22

public function one($id=0)

{

//获取请求参数的3种方法:

echo 'id:'.$id.'

'; //参数绑定法,

是换行

echo 'name:'.input('name').'

'; //助手函数法

echo 'age:'.Request::param('age'); //Facade调用,需要use引入Request类

}

验证器

//访问:/index.php/index/index/check?name=jack&age=22a

//访问:/index.php/index/index/check?name=ja&age=22

//访问:/index.php/index/index/check?name=jack&age=22

public function check()

{

//独立验证,不走验证封装的类

$validate = Validate::make([

'name' => 'require|min:3', //name必须存在,并且≥3个字符

'age' => 'number' //age必须是数字

]);

if (!$validate->check(input())) {

dump($validate->getError());

return;

}

dump(['msg'=>'正常']); //dump是打印输出,输出数组

}

抛出异常错误

//打开调试模式:修改配置文件config/app.php中的'app_debug'=> true

//访问:/index.php/index/index/ero //报方法参数错误,因为必须带id参数

//访问:/index.php/index/index/ero?id=2 //结果为4

//访问:/index.php/index/index/ero?id=0 //报错

public function ero($id)

{

try{

echo 8/$id;

}catch (\Exception $e){

exception('0不能当被除数', 400); //助手函数抛出异常

echo '抛出异常会终止执行,这里不会显示';

}

}

SQL文件,请手动创建数据库

CREATE TABLE `qy_user` (

`id` int(11) NOT NULL,

`name` varchar(255) NOT NULL,

`sex` int(11) NOT NULL,

`age` int(11) NOT NULL,

`create_time` int(11) NOT NULL,

`update_time` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `qy_user` (`id`, `name`, `sex`, `age`, `create_time`, `update_time`) VALUES

(1, '小张', 1, 23, 1560658653, 1560658653);

CREATE TABLE `qy_user_address` (

`id` int(11) NOT NULL,

`uid` int(11) NOT NULL,

`city` varchar(255) NOT NULL,

`county` varchar(255) NOT NULL,

`detail` varchar(255) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `qy_user_address` (`id`, `uid`, `city`, `county`, `detail`) VALUES

(1, 1, '北京', '海淀', 'XXXX街道XXXX号');

ALTER TABLE `qy_user` ADD PRIMARY KEY (`id`);

ALTER TABLE `qy_user_address` ADD PRIMARY KEY (`id`);

ALTER TABLE `qy_user` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

ALTER TABLE `qy_user_address` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

查询数据库,所有用户数据

//访问:/index.php/index/index/get_user

public function get_user()

{

//记得修改数据库配置文件中的前缀:'prefix'=> 'qy_'

$res[0]=Db::name('user')->all(); //通过Db类操作数据库

$res[1]=UserModel::all(); //通过模型操作数据(推荐),需要先建好模型类,下面有代码

return json($res); //输出json格式用json()或json_encode()

}

模型关联操作

//访问:/index.php/index/index/get_user_and_address

public function get_user_and_address()

{

//获取关联表所有内容

$res[0]=UserModel::with(['address'])->where('id',1)->find();

//获取关联表指定内容

$res[1]=UserModel::with(['address'=>function($q){

return $q->field('id,uid,detail');

}])->where('id',1)->find();

return json($res);

}

}

User模型类

同目录下新建User.php文件

namespace app\index\controller;

use think\Model;

class User extends Model{

public function address() {

return $this->hasOne('UserAddress','uid','id');

//关联键在address表,那么就用hasone,如果关联键在user表就用belongsTo

}

}

UserAddress模型类

同目录下新建UserAddress.php文件

namespace app\index\controller;

use think\Model;

class UserAddress extends Model

{

}

extend目录

extend目录下的目录必须要加命名空间

如:namespace Obj

应用的时候就是:use obj

extend目录下的文件,由于没有目录,所有不加命名空间

应用时:new \Obj即可

QQ截图1112112800.jpg

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。