ThinkPHP6.0 Verschiedenes
1. Sitzung
Um die Klasse
Session
zu verwenden, müssen Sie die Fassadenmethode (thinkfacadeSession
) verwenden ) Aufruf vonDie neue Version unterstützt nicht den Betrieb nativer
$_SESSION
-Arrays und alle Funktionen, die mitsession_
<🎜 beginnen, können nur über die Session-Klasse (bzw Hilfsfunktion) > 1. Konfigurationsdatei 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. Sitzung öffnen
- Middleware
- Datei
appmiddleware.php
\think\middleware\SessionInit::class
3. Einstellungen
- Sitzung Unterstützen Sie mehrstufige Array-Operationen
Session::set('name','欧阳克'); // Session数组 Session::set('admin.name','欧阳克'); Session::set('admin.uid',1);
Lesen Sie
// 获取全部Session Session::all(); // 获取Session中name的值 Session::get('name');
5. Holen Sie sich den Wert Und löschen Sie
Session::delete('name');
7. Anmeldebeispiel
Erstellen Sie eine neue login.php-Datei
Session::pull('name');
Neue Login/index.html-Datei
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(); } } }
index/index. html-Datei
<!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>
2. Cookie
Um die Cookie-Klasse zu verwenden, müssen Sie die Fassadenmethode verwenden (
) AufrufthinkfacadeCookie
Die Konfigurationsdatei befindet sich in der Datei cookie.php im Konfigurationsverzeichnis. Es ist keine manuelle Initialisierung erforderlich. Das System initialisiert das Cookie automatisch, bevor es aufgerufen wird >- 1. Verwendung von Cookies
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(); }
2 Konfigurationsdatei
// 设置Cookie 有效期为 3600秒 Cookie::set('name', '欧阳克', 3600); // 永久保存Cookie Cookie::forever('name', '欧阳克'); //删除cookie Cookie::delete('name'); // 读取某个cookie数据 Cookie::get('name');
) Rufen Sie
auf. Zu den integrierten unterstützten Cache-Typen gehören
,thinkfacadeCache
, , file
memcache
wincache
1. Cache verwendensqlite
return [ // cookie 保存时间 'expire' => 0, // cookie 保存路径 'path' => '/', // cookie 有效域名 'domain' => '', // cookie 启用安全传输 'secure' => false, // httponly设置 'httponly' => false, // 是否使用 setcookie 'setcookie' => true, ];
redis
2. Cache-Konfigurationsdatei
config Die Datei „cache.php“ im Verzeichnis
// 缓存在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();
- 4. Öffentlicher Controller
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
für jede nicht statische Klassenbibliothek
(动态)类库 | Fassade类 |
thinkApp | thinkfacadeApp |
t hinkCache | thinkfacadeCache |
thinkConfig | thinkfacadeConfig |
th inkCookie | thinkfacadeCookie |
thinkDb | thinkfacadeDb |
thinkEnv | thinkfacadeEnv |
thinkEvent | thinkfacadeEvent |
thinkFilesyste m | thinkfacadeFilesystem |
thinkLang | thinkfacadeLang |
thinkLo g | thinkfacadeLog |
thinkMiddleware | thinkfacadeMiddleware |
thi nkRequest | thinkfacadeRequest |
thinkResponse | thinkfacadeResponse |
thinkRoute | thinkfacadeRoute |
thinkSession | thinkfacadeSession |
thinkValidate | thinkfacadeValidate |
thinkView | thinkfacadeView |
1. Fassadenklasse
Die Fassade bietet eine statische Aufrufschnittstelle für (dynamische) Klassen im Container und bringt im Vergleich zum herkömmlichen statischen Methodenaufruf eine bessere Testbarkeit und Skalierbarkeit.
Das System wurde für die meisten Kerne entwickelt Die Herzklassenbibliothek definiert Facade, sodass Sie über Facade auf diese Systemklassen zugreifen können
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(); } }
2. (Dynamische) Klassenbibliothek
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(); } }
6. Hilfsfunktion
Thinkphp Das System kapselt Hilfsfunktionen für einige häufig verwendete Betriebsmethoden
Hilfsfunktion | Beschreibung |
Abbruch | Ausführung unterbrechen und HTTP-Statuscode senden |
App | Instanz schnell im Container abrufen Unterstützen Sie die Abhängigkeitsinjektion |
Bind | Fast Binding Object Instance |
Cache | Cache-Verwaltung |
class_basename | Klassennamen abrufen (ausgenommen Namespaces) Zeit) |
class_uses_recursive | Alle in einer Klasse verwendeten Tras abrufen it |
config | Konfigurationsparameter abrufen und festlegen |
Cookie | Cookie-Management |
herunterladen | Holen Sie sich thinkresponse Objektinstanz herunterladen |
Dump | Browserfreundliche Variablenausgabe |
env | Umgebungsvariablen abrufen |
Ereignis | Trigger-Ereignis |
anhalten | Variablen-Debug-Ausgabe und Ausführung unterbrechen |
Eingabe | Eingabedaten abrufen Unterstützt Standardwerte und Filterung |
aufrufen | Reflektionsausführung aufrufbar aufrufen Unterstützt Abhängigkeitsinjektion |
json | JSON-Datenausgabe |
jsonp | JS ONP-Datenausgabe |
lang | Sprachvariablenwert abrufen |
parse_name | Konvertierung des String-Benennungsstils |
Umleitung | Ausgabe umleiten |
Anforderungen t | Das aktuelle Request-Objekt abrufen |
Antwort | Das Antwortobjekt instanziieren |
Sitzung | Sitzungsverwaltung |
Token | Formularbefehl generieren Kartenausgabe |
Trace | Protokollinformationen aufzeichnen |
trait_uses_recursi ve | Alle Merkmale abrufen, auf die in einem Merkmal verwiesen wird |
URL | URL-Generierung |
validieren | Validator instanziieren |
ansehen | Vorlagenausgabe rendern |
Anzeige | Ausgabe gerenderter Inhalte |
xml | XML-Datenausgabe |
app_pat h | Aktuelles Anwendungsverzeichnis |
base_path | Anwendungsbasisverzeichnis |
config_path | Anwendungskonfigurationsverzeichnis |
öffentlicher_Pfad | Web-Stammverzeichnis |
Stammpfad | Anwendungsstammverzeichnis |
runtime_path | Anwendungslaufzeitverzeichnis |
// Eingabedaten abrufen, gleicher Effekt wie Request::param()$param = input();
// Variablen-Debugging-Ausgabe und Unterbrechung der Ausführung
$shop = Db::table('shop_goods')->select();
halt($shop);
//Vorlagenausgabe rendern, der gleiche Effekt wie View::fetch()
zurück view();
7. Debug-Modus und Trace-Debugging
- Datei im Stammverzeichnis
.env
APP_DEBUG = true
Hinweis: Deaktivieren Sie den Debugging-Modus nach der formellen Bereitstellung
2. Variablen-Debugging
- ThinPHP ist integriert
- Debugging-Methode
dump
dump($shop) ;