
ThinkPHP
TP框架基本知识以及商城练手项目。
Sparks550
世界上只有一种真正的英雄主义,那就是看清生活的真相之后,依然热爱生活。
展开
-
TP6,Error控制器,__call()方法
1、空控制器单应用模式下,我们可以给项目定义一个Error控制器类<?php namespace app\controller; class Error{ public function __call($name, $arguments){ $result = [ 'status' => config("status.controller_not_found"), 'message' =>'找不到该控制器',原创 2021-12-20 19:43:16 · 931 阅读 · 1 评论 -
TP5事务处理,普通事务和模型事务实例解析
为什么要用事务事务:执行完A事件,然后执行B事件,AB事件都执行完成才算完成。由于某些因素影响,A事件执行完成,B事件还没有来的及执行。怎么办呢?就需要数据库状态回到A事件执行前。这种事情多见于电商支付功能,因为订单的完成,肯定是要操作多个表的。前提条件数据库引擎必须支持事务操作。MyISAM:不支持事务,主要用于读数据提高性能InnoDB:支持事务、行级锁和并发//建议使用Berkeley DB:支持事务ThinkPHP5 使用事务有 3 个常用方法:普通事务操作 //启用事务原创 2021-11-30 09:47:36 · 3551 阅读 · 0 评论 -
TP5查询构造器查询语句select、find、colum、value详解
以下表为例:Select查询数据集: $res = Db::table('package_price_nb')->where('id',1)->select(); //"SELECT * FROM `package_price_nb` WHERE `id` = 1" halt($res);打印出来的数据格式:find$res = Db::name('package_price_nb')->where('id',1)->find(); //SELEC原创 2021-11-24 17:00:16 · 3322 阅读 · 0 评论 -
PHP安全与漏洞,防止SQL注入(一)
dada原创 2021-11-23 14:32:30 · 1328 阅读 · 0 评论 -
PHP利用guzzlehttp,发送HTTP请求,写API接口共通函数
public static function request($url,$param,$isFile=false){ //从cache获取token $my_token = (cache('data')); try { $client = new Client([ 'base_uri' => config('saasSimCloud.url'), 'head...原创 2021-11-04 20:13:00 · 355 阅读 · 0 评论 -
TP打印sql语句总结
获取并输出sql语句fetchSql();用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法 $tmp_list = Db::name('have_card') ->field('id , iccid, msisdn') ->where([ 'user_id' => $uid, 'msisdn' => ['IN', $list]原创 2021-11-02 14:24:23 · 1595 阅读 · 0 评论 -
树状图0916
$power_res = array(); $total = array(); for ($menu_id = 2 ;$menu_id <= 8; $menu_id ++){ $power_res['$menu_id'] = Db::name('admin_power') //->field('id,name,pid,o') -&...原创 2021-09-16 19:59:19 · 142 阅读 · 0 评论 -
TP5 查询构造器之查询语法、链式操作、聚合查询、左连接、右连接、子查询以及其他
查询语法列查询和值查询// 查询值,返回某个字段的值Db::table('think_user')->where('id',1)->value('name');// 查询列,返回数组Db::table('think_user')->where('status',1)->column('name');// 指定索引Db::table('think_user')->where('status',1)->column('name','id');Db::tabl原创 2021-09-16 10:29:20 · 788 阅读 · 0 评论 -
TP5 Validate验证 、基础写法及内置规则
常用写法第一种方法:新建一个控制器类,然后其他控制器直接调用//新建一个控制器类namespace app\index\validate;use think\Validate;class User extends Validate{ protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ]; protected $message原创 2021-09-16 09:19:28 · 2061 阅读 · 0 评论 -
TP5-数据库查询左连接
左连接:展示主表的所有数据(包括不匹配的哈!)。右连接:只展示左表匹配得上的数据。Db::name(‘test1’)->alias(‘a’)->join(‘test2 b’,‘a.id=b.id’,‘LEFT’)->select();以上代码会展示出 test1 表的所有数据,以及 展示 test2(id与 test1表 id 相等的) 相匹配数据。 $res_imei = Db::name('admin_role') ->where($w.原创 2021-09-15 09:59:01 · 1230 阅读 · 0 评论 -
TP6----redis的hash操作打造商城购物车
创建一个购物车的控制器namespace app\api\controller;use app\common\lib\Show;use app\common\business\Cart as CartBis;class Cart extends AuthBase { public function add() { if(!$this->request->isPost()) { return Show::error(); }原创 2020-11-25 21:29:56 · 1289 阅读 · 0 评论 -
阿里云短信介绍和SDK的获取
基本需求阿里云首页必须添加签名(谁的)和模板管理(短信格式)下一个关注key点开后这个页面如何使用快速学习页面,一看便懂在代码里是如何体现的安装//composer安装包,最好看下阿里的文档composer require alibabacloud/sdk安装成功后,会有一个文件夹...原创 2020-11-21 00:27:01 · 231 阅读 · 0 评论 -
TP6中间件详解实例
用处中间件主要处理一些http的请求,比如过滤拦截等,并且做一些相应的处理。注意事项中间件入口执行方法必须是handle方法,且第一个参数是Request对象,第二个参数是一个闭包。中间件 handle 方法的返回值必须是一个 Response 对象...原创 2020-11-19 20:37:40 · 1864 阅读 · 0 评论 -
TP6登录
一.登录流程正常:登录页面,登录成功跳转到后端页面,登录失败(密码错误or 用户不错在 or …)回到登录页面未登录:用户没登录的情况下,跳回登录页面已登录:已经登录(再次访问登录页面,sessio等有记录),直接跳转到后端页面...原创 2020-11-17 00:07:44 · 2591 阅读 · 5 评论 -
谷歌浏览器安装json-handle插件
安装json格式化插件下载1.点我2.安装访问chrome://extensions/然后找到你下载的JSON-handle_0.5.2.crx文件,拖进去!拖进去!拖进去!格式化,还挺好用哈~原创 2020-11-09 15:24:33 · 204 阅读 · 0 评论 -
TP框架安装依赖包——failed to open stream:No sunch file or directory in /路径/路径
问题:没有安装vender包解决办法:点我1.安装composer后:运行下列代码直接复制到项目路径下也能用php composer.phar install ==composer install == composer.`bat install`这三种方式是等效的;2. 运行代码后可能出现以下错误:将文件拷过去,其中composer.json:来自其他相同框架,composer.phar:composer文件即可安装vender包...原创 2020-10-30 01:28:17 · 646 阅读 · 0 评论 -
tp6杜绝无效请求
在config/app.php文件里可以修改开发者模式等(true/false)魔术方法call方法不存在时当程序调用当前类中未声明或者没有权限调用的方法时,系统会自动调用该方法public function __call($name,$arguments){ $result = [ 'status'=>0, 'message'=>"找不到该方法", 'result...原创 2020-04-27 03:51:32 · 797 阅读 · 0 评论 -
tp获取参数的方法(获取url数据)
1.内置函数param//param函数,tp5内置函数, public function request(){ dump($this->request->param("abc",1,"intval")); }通过父类(BaseController)中的request实例调用param方法param(“名字”,初始值,)...原创 2020-04-27 02:55:30 · 3222 阅读 · 0 评论 -
TP6中的No input file specified/not found The requested URL was not found on this server
我使用的是PHPstudy,当PHP的版本号为5.5.38的时候,正常;但是在PHP7的时候就会报: No input file specified这个问题。这是因为路由的问题1.我们只需打开public/.htaccess文件;2.将最后一行的代码改成这样: RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]记得保存。仅仅多一个“?”...原创 2020-04-22 14:12:02 · 2811 阅读 · 0 评论 -
一个商城项目的架构分层
架构分层意义1.结耦2.同意规范3.开发速度快原创 2020-05-20 22:45:43 · 611 阅读 · 0 评论 -
TP6不可预知的内部异常处理
TP公共文件异常对于不可预知的内部异常,可以通过app/ExceptionHandle(公共文件)文件内设置。class E extends BaseController{ public function index() { //echo 未定义的变量 echo "$ads"; }}public function render($request, Throwable $e): Response { // 添加自定义异常处原创 2020-05-21 01:23:53 · 733 阅读 · 0 评论 -
tp6数据库操作之问题排查方法
数据库操作之问题排查方法(DB)思路是在网页端打印出sql查询语句,然后复制放在mysql终端执行,看是否能查询出语句//方法1:加入fetchSql(),括号内可加true或false使其有效或无效$result = DB::table("mall_demo")->where("id",4)->fetchSql()->find();//方法2:固定用法$res...原创 2020-05-04 20:00:15 · 844 阅读 · 0 评论