ThinkPHP5 相关知识重点笔记

ThinkPHP3.2基本知识 一. ThinkPHP框架 1. 什么是框架 php框架是许多代码的集合,这些代码是程序结构的代码(并不是业务代码)代码中有许多函数、类、功能类包,框架的代码按照一定标准组成了一个有机的功能体,这个功能体里边有许多设计模式如MVC、单例、AR等等。 2. 不使用框架开发遇到的问题 ① 代码编写没有统一规范,项目生命时间非常短,不延续 ② 一个小地方的修改会牵扯到全局变化,牵一发动全身 阅读详情
一、相关配置
1、配置文件:config/config.php
<?php
return [
// 是否开启路由
    'url_route_on'           => true,
];
?>
2、获取配置项
<?php
namespace app\index\controller;
use think\Controller;
use think\Config;
class Index
{
    public function index()
    {
        //return config('site_name');配置方法获取
        return dump(Config::get('database'));//get获取,推荐使用这种
    }
}
//设置配置
Config::set('abc',123);
 Config::set($arr)
 
二、路由设置
config/route.php
<?php
// think\Route::rule('demo/:class','sam/test/demo','GET',['ext'=>'html'],['class'=>'\w{1,10}']); //单个设置
//数组方式设置(推荐)
return [
'index'=>'sam/test/index',
'demo/:class'=>['sam/test/demo',['method'=>'GET','ext'=>'html'],'class'=>'\w{1,10}'],
];
?>
-----默认值(接上面)-------------
http://tp5.cn/demo/yan/javascript.html
public function demo($name,$class='php')
{
return '这是'.$name.'老师的正在学习'.$class;
}
think\Route::rule('demo/:name/[:class]/','sam/test/demo','GET',['ext'=>'html'],['class'=>'\w{1,10}','name'=>'\w{3,8}']);
或


return [
'index'=>'sam/test/index',
'demo/:name/[:class]/'=>['sam/test/demo',['method'=>'GET','ext'=>'html'],['class'=>'\w{1,10}','name'=>'\w{3,8}']],
];
-----------


路由参数规则route.php
(1)分开写
think\Route::pattern([
'name'=>'[a-zA-Z]+',
'age'=>'\d{2}'
]);
think\Route::get('demo/:name/:age','sam/test/demo');
(2)合并写
return [
'__pattern__'=>[
'name'=>'[a-zA-Z]+',
'age'=>'\d{2}'
],
'demo/:name/:age'=>'sam/test/demo'
];
 


依赖注入,向类中的方法传递对象的方法
class Temp
{
private $name;
public function __construct($name='Sam')
{
$this->name=$name;
}
public function setName($name)
{
$this->name=$name;
}
public function getName()
{
return '方法是:'.__METHOD__.'属性是:'.$this->name;
}
}
----------
public function getMethod(\app\common\Temp $testtemp)
{
// 方法里的 \app\common\Temp $testtemp等价于下面这行
// $testtemp = new \app\common\Temp;
$testtemp->setName('SamC');
return $testtemp->getName();
}
//绑定一个类到容器
public function bindClass()
{
//把一个类放到容器中(注册到容器)
\think\Container::set('temp','\app\common\Temp');
//使用助手函数bind()
//bind('temp','\app\common\Temp');
//将容器里的类实例化并取出来
$temp = \think\Container::get('temp',['name'=>'Samphp']);
//或 
//$temp = app('temp',['name'=>'Samphp']);
return $temp->getName();
}
//绑定一个闭包到容器(理解为匿名函数)
public function bingClosure()
{
\think\Container::set('demo',function($domain){
return '微语录的网址是:'.$domain;
});
//将容器里的闭包取出来用
return \think\Container::get('demo',['domain'=>'www.top789.cn']);
 
}
ThinkPHP5快速入门实战指南 ThinkPHP5提供了多样化的路由定义方式,既支持简单的字符串绑定,也支持复杂的正则约束与嵌套分组,满足从基础站点到复杂微服务的各种需求。模型是ORM的核心载体,它不仅封装了对某张数据表的操作接口,还承载了业务逻辑、验证规则、关联关系等职责。ThinkPHP5中的模型继承自,提供了一套简洁而强大的API用于数据操作。php// 指定表名(若不符合规则需手动设定)// 设置主键字段// 自动写入时间戳字段// 时间戳字段名(非默认时需指定) 阅读详情

相关推荐

ThinkPhp知识大全(非常详细)

ThinkPhp知识大全(非常详细) ThinkPhp知识大全(非常详细)ThinkPhp知识大全(非常详细)ThinkPhp知识大全(非常详细)

thinkphp6读取配置文件中环境变量定义的方法

thinkphp6读取配置文件中环境变量定义的方法env配置定义及获取配置定义格式:env( 环境变量定义)的获取配置文件中使用环境变量配置文件的配置获取参数批量设置 env配置定义及获取 1.其中两项配置app_debug、config_ext只在.env生效 参见开启调试模式及代码跟踪器 2.除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。 配置定义格式: APP_DEBUG = true ;数据库配置项 [DATABASE] TYPE = mysql HOSTNAME

徊忆羽菲 3372

ThinkPHP5官方教程全集价值100+(5本)

包含以下5本:ThinkPHP5.0-快速入门手册(新手教程版),ThinkPHP5.0完全开发手册,ThinkPHP5路由完全指南,ThinkPHP5控制器从入门到精通,掌握ThinkPHP5.0数据库和模型。

PHP5学习笔记

phpecho 在phpv.net看到的感觉不错;/*+-------------------------------------------------------------------------------+| = 本文为Haohappy读> | = 中Classes and Objects一章的笔记 | = 翻译为主+个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 |

bighuang的专栏 1043

thinkPHP5框架路由常用知识点汇总

本文实例讲述了thinkPHP5框架路由常用知识点。分享给大家供大家参考,具体如下: 一、路由的模式 普通模式(默认pathinfo,不解析路由) 'url_route_on' => false 混合模式(pathinfo+解析路由) 'url_route_on' => true, 'url_route_must'=> false, 强制模式(必须路由) 'url_route_on' => true, 'url_route_must' => true, 二、动态注册路由 1、动态注册路由 Route::rule(‘路由表达式’,’路由地址’,’请求类型’,’路由参数(数组)’,’变量

SRv6项目实践(三):P4Runtime基础以及交换机控制

在正式介绍P4runtime基础之前,先说一说P4的编译和实现的过程该文件包含了各个表和操作,它们的id用一个索引值来表示,比如a表用b操作,不会直接说用名字为B的操作,而是说用索引为xxx的操作,然后锁定到b上执行相关的功能,其次,用了一个bitwith来描述,要访问的数据的比特长度是多长。p4c编译器将p4编译成两份文件,其中一份是,另一份是,将这两个文件再整合起来,作为配置,放到交换机中。

a1164520408的博客 3411

php常用技术与thinkphp5,thinkPHP5框架路由常用知识点汇总

本文实例讲述了thinkPHP5框架路由常用知识点。分享给大家供大家参考,具体如下:一、路由的模式普通模式(默认pathinfo,不解析路由)'url_route_on' => false混合模式(pathinfo+解析路由)'url_route_on' => true,'url_route_must'=> false,强制模式(必须路由)'url_route_on' =>...

weixin_32183427的博客 387

nsight-system教程

参考nsight-compute使用教程-优快云博客。

youzjuer的博客 1894

php功能知识点1,thinkphp5.0 知识点总结(1)

thinkphp5.0 知识点总结(1)1、模板里使用路由生成网站url{:url('index/getpage')}具体api文档参见:http://www.kancloud.cn/manual/thinkphp5/1180412、模板文件的使用方法一、 创建View视图方法,需引用命名空间包think\View,参考代码如下:$view = new View();return $view-&g...

weixin_42303522的博客 187

ADI恒流驱动芯片LT3763调试心得(25A恒流驱动)

看似很简单的一个电路,调了好几版硬件,中间还出现过一个插曲,就是电感,我用的是27A,1.5uH的,贴片封装,由于频繁试板,电感来回用热风枪拆了3次,结果上电空载到3A都没有问题,但是以上10A以上,就出现烧LT3763和mos的情况,一连烧了8片,搞得有点怀疑人生,一度觉得我的电路设计有问题,邮件咨询ADI的FAE后,确认电路设计没有问题。1、大功率同步整流的Nmos管都是取不同的型号,就是厂家推荐的主开关管和续流管的型号往往都不一样,这个里面有什么讲究,我没有整明白,暂时也不需要弄明白。

liming98lm的博客 3922

别再手动写ZPL了!用C#和斑马官方SDK搞定ZT410 RFID打印机(附中文乱码解决方案)

本文详细介绍了如何使用C#和斑马官方SDK驱动ZT410 RFID打印机,解决中文乱码和RFID数据写入等常见问题。通过实战指南,开发者可以快速掌握从基础连接到高级调试的全流程,提升打印效率和可靠性。特别适用于物流、零售和资产管理领域的应用。

weixin_29267307的博客 226

thinkphp5 return 返回空_thinkphp3和thinkphp5的区别

thinkphp3和thinkphp5的区别?下面给大家介绍一下两者的不同之处:一、thinkphp3.2和thinkphp5之间的使用差异1、过去的单字母函数已完全被替换掉,如下:S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=>lang,A=>controller,R=&g...

weixin_39564036的博客 352

射频微波电路设计【1.4】

AppCAD是一组射频设计工具和计算机应用说明,它使射频工程师能以更快和更容易的方式设计他们的产品。该软件的理 念是为工程师提供一个“个人设计助理”,即功能强大、快速和容易使用的辅助设计工具。该软件包括如下基本功能: ·各种传输线电气参数的分析与计算;·各种匹配电路的分析与计算;·各种有源和无源简单电路的分析与计算;·射频系统指标的计算:增益、噪声系数、三阶交调、信噪比、灵敏度等;·器件可靠性分析。

qq_43416206的博客 2325

thinkPHP5.0框架 的相关配置文件和读取配置

一、配置文件的格式 a) ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式。 b) 主要的学习形式就是数组 return [ 'name'=>'', 'age'=>'', ]; 二、配置的形式 1、惯例配置 a、惯例配置目录 ...

平凡的平淡的博客 2623

用 Docker 一键部署 SillyTavern酒馆 mac/windows/linux通用教程,我再也不手动折腾了!

本文介绍了如何使用 Docker 一键部署 SillyTavern 项目,适用于 Mac、Windows 和 Linux 系统。SillyTavern 是一个本地部署的大语言模型聊天界面,支持多种插件和扩展。文章详细说明了安装 Docker、拉取项目、启动容器、配置白名单、启用插件等步骤,并提供了常见问题的解决方法。通过 Docker 部署,用户可以避免繁琐的手动配置,快速搭建和运行 SillyTavern,适合希望简化部署流程的用户。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2627

DaVinci配置DID之二:工具链配置

本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。1,CDD准备2,工具链配置3,代码实现4,验证结果本文讲述流程2话不多说,走你~博主也是AutoSar小白,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在下章关于代码具体实现的博文再相会哈~

weixin_48498880的博客 5743

ThinkPHP5源码阅读-类的自动加载register与autoload的实现

PHP快速入门与实战ThinkPHP是国内最流行的一款PHP框架,是国人自主研发的框架,起源于2006年,经过了十几年的不断发展。已经成为了一款被PHP广泛认可的性能开发效率兼具的利器。阅读框架源码有助于我们更好的学习语言基础,拓展设计模式等相关能力。同时很多设计与编码的思想也能更好的指导我们日常工作,尤其是想成为资深程序员或者架构师方面的同事,这是一个必须要学习的过程。今天是ThinkPHP5源码第一讲,关于类的自动加载,看看源码底层是怎么实现的。怕迷路的同学,先给个关注吧。

黑夜开发者的博客 2254

Aip1640、TM1640驱动程序

本文介绍了AIP1640/TM1640驱动芯片的编程实现,主要包括硬件接口定义和通信协议函数。通过宏定义配置时钟(CLK)和数据线(DIO)的GPIO控制,实现了I2C协议的启动、停止、字节发送等基本操作。核心函数AIP1640_Disp_Drive()完成显示驱动流程:先发送0x40命令设置地址自增模式,再发送0xC0起始地址和16字节显示数据,最后设置亮度参数。文中还包含5微秒延时函数、显示数据缓冲区定义,以及LED和数码管(SMG)的位映射注释说明。该代码适用于控制LED数码管显示,支持亮度调节功能。

zqx的博客 1403

Thinkphp5.1 报错找不到 thinkphp/base.php

报错内容: Warning: require(E:\thinkphp\public/../thinkphp/base.php): failed to open stream: No such file or directory in E:\PHPProject2018\tp\public\index.php on line 16 报错解释: 找不到 thinkphp/base.php 这个文件,因为你没有下载核心内容,所以会报这个错误。 在git里面下载核心内容回来:GitHub - top

小洪帽i的博客 3709

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Thinkphp5框架简单理解

ThinkPHP5中支持5种定义方式定义格式方式1:路由到模块/控制器‘[模块/控制器/操作]?额外参数1=值1&额外参数2=值2…’方式2:路由到重定向地址‘外部地址’(默认301重定向) 或者 [‘外部地址’,‘重定向代码’]方式3:路由到控制器的方法‘@[模块/控制器/]操作’方式4:路由到类的方法‘\完整的命名空间类::静态方法’ 或者 ‘\完整的命名空间类@动态方法’方式5:路由到闭包函数闭包函数定义(支持参数传入)

Jeromeyoung 1008

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ThinkPHP5_验证码登陆的实现

显示验证码 1.需要在config.php配置 //验证码配置 'captcha' => [ // 验证码位数 'length' => 4, // 是否画混淆曲线 'useCurve' => false, ] 2.在login.html中写上 {:captcha_src()}显...

weixin_42137574的博客 779

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ThinkPHP 5.0.24 到 ThinkPHP 8.x 迁移学习指南

php// 自动时间戳// 类型转换// 关联查询路由定义在php// 路由规则// 路由分组});phpclass Auth// 前置中间件逻辑if (!// 后置中间件逻辑✅PHP 8 类型系统- 强制类型声明,提高代码质量✅依赖注入- 更优雅的代码组织方式✅中间件系统- 替代行为钩子,更标准化✅独立的 ORM- think-orm 可独立使用✅配置分离- 更清晰的配置管理✅服务提供者- 更好的服务注册机制。

小虎哥-不可能变成可能 925

thinkphp5 文件处理类 延伸扩展

thinkphp5的手册中提出: File类继承了PHP的SplFileObject类 手册中在文件上传的地方只是提到了框架自身的一些函数,但是在文件上传后文件内容的处理没有提及,因为那是SplFileObject中的内容了,这里我简单总结了一下,在$file = $request->file('file');之后,对$file可以调用的一些函数,这些函数可以很方便的帮助我们做一些文件处理

Salted fish in hand, I have the world. 4170

Thinkphp6快速入门教程

为什么学ThinkPhp6? ​ php是世界上最好的语言。thinkphp是最流行的php框架。thinkphp6版本是最新最前沿的版本。屏幕前学习的你,嗯,是最好看的. 这优势,没的说,赶紧买买买!!!哦不说错了,学它学它选它~物美价廉,大家快来学啊!!! 开始thinkphp6: thinkphp6其实就是thinkphp5.2,6是最新的版本,很多人听过thinkphp3点几,thinkphp5.0,thinkphp5.1,很好奇为什么不见5.2呢。事实上,从5.1到5.2版本变化太大了,就

疯流人物 1万+

redis thinkphp5.1_ThinkPHP5.1使用redis缓存 - thinkphp5.1

..._tmp_dir发现这个目录是upload_tmp_dir="D:\www.jb51.net\tp"我检查一下我的D盘发现只有www.jb51.net文件而没有tp目录了,这样问题就找到了,于时我创建一个tp目录,重启apache发现在tp目录有sess_i40gl0p4hfep5r69j67o1k26d01文件了,...ThinkPHP框架已经封装好redis驱动,不管是session还是...

weixin_39531178的博客 326
上一篇: 阿里云搭建wdcp进行多网站管理
下一篇: ThinkPHP5.1的数据库链接和增删改查
samcPHP
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值