ThinkPHP6.0 Pelbagai
1. Sesi
Untuk menggunakan kelas
Session
, anda mesti menggunakan kaedah fasad (thinkfacadeSession
) untuk memanggilSession
类必须使用门面方式(thinkfacadeSession
)调用新版本不支持操作原生
$_SESSION
数组和所有session_
开头的函数,只能通过Session类(或者助手函数)来操作
1、配置文件 session.php
return [ // session name 'name' => 'PHPSESSID', // SESSION_ID的提交变量,解决flash上传跨域 'var_session_id' => '', // 驱动方式 支持file cache 'type' => 'file', // 存储连接标识 当type使用cache的时候有效 'store' => null, // 过期时间 'expire' => 1440, // 前缀 'prefix' => '', ];
2、开启Session
中间件
appmiddleware.php
文件
\think\middleware\SessionInit::class
3、设置
session 支持多级数组操作
Session::set('name','欧阳克'); // Session数组 Session::set('admin.name','欧阳克'); Session::set('admin.uid',1);
4、读取
// 获取全部Session Session::all(); // 获取Session中name的值 Session::get('name');
5、删除
Session::delete('name');
6、取值并删除
Session::pull('name');
7、登陆示例
新建login.php文件
namespace app\controller; use think\facade\View; use think\facade\Db; use think\facade\Request; use think\facade\Session; class Login{ public function index(){ if(Request::method() == 'POST'){ $all = Request::param(); $admin = Db::table('shop_admin')->where('account',$all['account'])->find(); if(empty($admin)){ echo json_encode(['code'=>1,'msg'=>'未找到管理员']); exit; } if(md5($all['pwd']) != $admin['password']){ echo json_encode(['code'=>1,'msg'=>'密码错误']); exit; } Session::set('uid',$admin['uid']); Session::set('account',$admin['account']); echo json_encode(['code'=>0,'msg'=>'登陆成功']) ; }else{ $title = '商城'; View::assign([ 'title' => $title ]); return View::fetch(); } } }
新建Login/index.html文件
<!DOCTYPE html> <html> <head> <title>登录</title> <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css"> <script type="text/javascript" src="/static/layui/layui.js"></script> </head> <body style="background: #1E9FFF"> <div style="position: absolute; left:50%;top:50%;width: 500px;margin-left: -250px;margin-top: -200px;"> <div style="background: #ffffff;padding: 20px;border-radius: 4px;box-shadow: 5px 5px 20px #444444;"> <form class="layui-form"> <div class="layui-form-item" style="color:gray;"> <h2>{$title}--后台管理系统</h2> </div> <hr> <div class="layui-form-item"> <label class="layui-form-label">用户名</label> <div class="layui-input-block"> <input type="text" id="account" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">密 码</label> <div class="layui-input-block"> <input type="password" id="password" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="button" class="layui-btn" onclick="dologin()">登录</button> </div> </div> </form> </div> </div> <script type="text/javascript"> layui.use(['layer'],function(){ $ = layui.jquery; layer = layui.layer; // 用户名控件获取焦点 $('#account').focus(); // 回车登录 $('input').keydown(function(e){ if(e.keyCode == 13){ dologin(); } }); }); function dologin(){ var account = $.trim($('#account').val()); var pwd = $.trim($('#password').val()); if(account == ''){ layer.alert('请输入用户名',{icon:2}); return; } if(pwd == ''){ layer.alert('请输入密码',{icon:2}); return; } $.post('/index.php/login/index',{'account':account,'pwd':pwd},function(res){ if(res.code>0){ layer.alert(res.msg,{icon:2}); }else{ layer.msg(res.msg); setTimeout(function(){window.location.href = '/index.php/index/index'},1000); } },'json'); } </script> </body> </html>
index/index.html文件
use think\facade\Session; public function index(){ $title = '商城'; $session = Session::all(); if(empty($session['uid'])){ echo '<script type="text/javascript">alert("请登录!");window.location.href = "/index.php/login/index"; </script>'; exit; } $login = $session['account']; # 左侧菜单 $menu = Db::table('shop_menu')->where('fid',0)->select(); $left = $menu->toArray(); foreach($left as &$left_v){ $left_v['lists'] = Db::table('shop_menu')->where('fid',$left_v['id'])->select(); } # 右侧列表 $param = Request::param(); if(isset($param['status']) && $param['status'] == 1){ $where['status'] = 1; }else if(isset($param['status']) && $param['status'] == 2){ $where['status'] = 2; }else{ $where = true; } $p = isset($param['p']) ? $param['p'] : 1; $db = new Goods(); $order = [ 'add_time DESC', 'id DESC' ]; $right = $db->get_all($where,$order,$p,5); View::assign([ 'title' => $title, 'login' => $login, 'left' => $left, 'right' => $right['data'], 'count' => $right['count'], 'p' => $p, 'status' => isset($param['status']) ? $param['status'] : 0 ]); return View::fetch(); }
二、Cookie
要使用Cookie类必须使用门面方式(
thinkfacadeCookie
)调用配置文件位于配置目录下的cookie.php文件,无需手动初始化,系统会在调用之前自动进行Cookie初始化工作
1、使用 Cookie
// 设置Cookie 有效期为 3600秒 Cookie::set('name', '欧阳克', 3600); // 永久保存Cookie Cookie::forever('name', '欧阳克'); //删除cookie Cookie::delete('name'); // 读取某个cookie数据 Cookie::get('name');
2、Cookie 配置文件
config 目录下 cookie.php 文件
return [ // cookie 保存时间 'expire' => 0, // cookie 保存路径 'path' => '/', // cookie 有效域名 'domain' => '', // cookie 启用安全传输 'secure' => false, // httponly设置 'httponly' => false, // 是否使用 setcookie 'setcookie' => true, ];
三、缓存
要使用缓存必须使用门面方式(
thinkfacadeCache
)调用内置支持的缓存类型包括
file
、memcache
、wincache
、sqlite
、redis
1、使用缓存
// 缓存在3600秒之后过期 Cache::set('number', 10, 3600); // number自增(步进值为3) Cache::inc('number',3); // number自减(步进值为1) Cache::dec('number'); // 获取缓存 Cache::get('number'); // 删除缓存 Cache::delete('number'); // push 追加缓存 Cache::set('name', ['欧阳克','朱老师']); Cache::push('name', '西门大官人'); // 获取并删除缓存 Cache::pull('name'); // 清空缓存 Cache::clear();
2、缓存配置文件
config 目录下 cache.php 文件
return [ // 默认缓存驱动 'default' => 'file', // 缓存连接方式配置 'stores' => [ 'file' => [ // 驱动方式 'type' => 'File', // 缓存保存目录 'path' => '', // 缓存前缀 'prefix' => '', // 缓存有效期 0表示永久缓存 'expire' => 0, // 缓存标签前缀 'tag_prefix' => 'tag:', // 序列化机制 例如 ['serialize', 'unserialize'] 'serialize' => [], ], // redis缓存 'redis' => [ // 驱动方式 'type' => 'redis', // 服务器地址 'host' => '127.0.0.1', ], // 更多的缓存连接 ], ];
四、公用控制器
BaseController.php
默认基础控制器类
use think\facade\View; use think\facade\Db; use think\facade\Session; public function initialize(){ $session = Session::all(); if(empty($session['uid'])){ echo '<script type="text/javascript">alert("请登录!");window.location.href = "/index.php/login/index"; </script>'; exit; } $login = $session['account']; # 左侧菜单 $menu = Db::table('shop_menu')->where('fid',0)->select(); $left = $menu->toArray(); foreach($left as &$left_v){ $left_v['lists'] = Db::table('shop_menu')->where('fid',$left_v['id'])->select(); } View::assign([ 'login' => $login, 'left' => $left, ]); } Index/Index.php namespace app\controller; use app\BaseController; use think\facade\View; use think\facade\Db; use think\facade\Request; use app\model\Goods; class Index extends BaseController{ public function index(){ $title = '商城'; # 右侧列表 $param = Request::param(); if(isset($param['status']) && $param['status'] == 1){ $where['status'] = 1; }else if(isset($param['status']) && $param['status'] == 2){ $where['status'] = 2; }else{ $where = true; } $p = isset($param['p']) ? $param['p'] : 1; $db = new Goods(); $order = [ 'add_time DESC', 'id DESC' ]; $right = $db->get_all($where,$order,$p,5); View::assign([ 'title' => $title, 'right' => $right['data'], 'count' => $right['count'], 'p' => $p, 'status' => isset($param['status']) ? $param['status'] : 0 ]); return View::fetch(); } }
五、门面 Facade
门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个
facade
🎜Yang baharu versi tidak menyokong operasi asli< Tatasusunan kod>$_SESSION dan semua fungsi bermula dengan
session_
hanya boleh dikendalikan melalui kelas Sesi (atau fungsi pembantu)🎜 ul>🎜1. Sesi fail konfigurasi .php🎜use think\facade\App; use think\facade\Db; use think\facade\View; use think\facade\Request; use think\facade\Session; class Index{ public function index(){ // 数据库操作 $select = Db::table('shop_goods')->select(); // 请求对象 $param = Request::param(); // Session $session = Session::all(); // 视图 return View::fetch(); } }🎜2. Buka Sesi🎜🎜🎜🎜Fail
appmiddleware.php
🎜use think\App; use think\Db; use think\View; use think\Request; use think\Session; class Index{ public function index(View $view,Db $db){ $select = $db->table('shop_goods')->select(); $view->assign([ 'name' => '欧阳克', 'select' => $select ]); return $view->fetch(); } }🎜🎜3 🎜sesi menyokong operasi tatasusunan berbilang peringkat 🎜rrreee🎜4 Baca 🎜rrreee🎜5 Padam 🎜rrreee🎜6 Dapatkan nilai dan padam 🎜rrreee🎜7 fail login.php baharu🎜rrreee🎜🎜🎜Fail Log Masuk/index.html baharu🎜rrreee🎜🎜🎜index/index.html fail🎜 rrreee🎜 2. Cookie🎜 🎜🎜🎜Untuk menggunakan kelas Cookie, anda mesti menggunakan kaedah fasad (
thinkfacadeCookie
) untuk memanggil 🎜🎜🎜Fail konfigurasi terletak di fail cookie.php dalam direktori konfigurasi. Tidak perlu memulakannya secara manual Sistem akan memanggilnya sebelum melakukan inisialisasi Cookie🎜🎜1 Gunakan konfigurasi Cookie🎜2 fail🎜🎜🎜🎜config directory cookie.php file🎜rrreee🎜Tiga , cache🎜🎜🎜🎜Untuk menggunakan cache, anda mesti menggunakan kaedah fasad (thinkfacadeCache
) untuk call🎜🎜🎜Jenis cache yang disokong terbina dalam termasuk fail
, memcache
, wincache
, sqlite
, redis
🎜🎜1 Gunakan cache🎜rrreee🎜2. rrreee🎜Four. Public controller🎜🎜🎜🎜BaseController.php
Default base controller class🎜 rrreee🎜 5. Facade Facade🎜🎜🎜🎜Fasad menyediakan antara muka panggilan statik kelas (dinamik) dalam bekas. Berbanding dengan panggilan kaedah statik tradisional, ia membawa kebolehpercayaan yang lebih baik Kebolehujian dan kebolehlanjutan, anda boleh menentukan kelas fasad
untuk mana-mana perpustakaan kelas bukan statik🎜Perpustakaan Kelas (Dinamik) | thinkConfigthinkfacadeConfig |
thinkCookie | thinkfacadeCookie |
thinkDb | thinkfacadeDb |
thinkEnv | thinkfacadeEnv |
thinkEvent | thinkfacadeEvent |
thinkLang | |
thinkLog | |
thinkMiddleware | |
thinkRequest | |
thinkResponse | |
thinkfacadeRequest | |
thinkResponse | thinkfacadeResponse |
thinkSession | |
thinkValidate | thinkfacadeValidate |
thinkView | thinkfacadeView |
- rrreee
- 2. (Dinamik) perpustakaan kelas
rrreee
6 Fungsi Helper - Thinkphp sistem digunakan untuk beberapa fungsi yang biasa digunakan Kaedah operasi merangkumkan fungsi bantuan.Fungsi pembantu
cepat binding Defined object instance | |
pengurusan cache | |
Dapatkan nama kelas (tidak termasuk ruang nama) | digunakan semula dalam kelas. |
config | |
kuki | |
muat turun | |
keluaran mesra | |
env | Dapatkan pembolehubah persekitaran |
acara | Acara pencetus |
berhenti | Output penyahpepijatan boleh ubah dan pelaksanaan gangguan |
input | Dapatkan data input menyokong nilai lalai dan penapisan |
invoke | Panggilan refleksi pelaksanaan boleh dipanggil Sokongan kebergantungan suntikan |
json | JSON data output |
jsonp | JSONP |
output data JSONP | Dapatkan pembolehubah bahasa Nilai |
parse_name | Penukaran gaya penamaan rentetan |
ubah hala | Ubah hala keluaran |
permintaan | Dapatkan objek Permintaan semasa |
balas objek | Response |
Pengurusan Sesi | |
token | Jana keluaran token borang |
jejak | Rekod maklumat log |
trait_uses_recursive | Dapatkan semua sifat yang dirujuk dalam sifat. |
generasi rl | |
Pengesah segera | |
menunjukkan output templat | |
paparan | Memaparkan output kandungan |
xml | XML output data |
app_path | Direktori aplikasi semasa direktori asas |
config_path | Direktori konfigurasi aplikasi |
// Dapatkan data input, ikuti Permintaan::param ( ) mempunyai kesan yang sama | |
// Output penyahpepijatan berubah dan pelaksanaan interupsi | $shop = Db::table('shop_goods')->select(); |
// Hidupkan mod penyahpepijatan dan Jejaki penyahpepijatan | |
Persediaan: Matikan mod penyahpepijatan selepas penggunaan rasmi |
dump
Kaedah penyahpepijatan$shop = Db::table('shop_goods')->select();
dump($shop);