tp5入门开发手册笔记

合集下载

TP5整理开发文档

TP5整理开发文档

<?php//跨域ajax请求://class 前面加:header("Access-Control-Allow-Origin: *");开启调试\application\config.php 22行附近'app_trace' => false,——》'app_trace' => true,全局公用函数扩展application\common.php 文件中定于自己的函数,全局可以调用common.php里:function my_fun(){return '2222222222222222';}任意一个控制器直接调用即可:echo my_fun();全局公用类库扩展创建的类库存放于 extend目录下面示例文件:extend\org\util\ArrayList.phpextend\org\util\下面如果org和util没有,自行添加文件夹> 注意ArrayList类的命名空间是 namespace org\util,而不是 namespace extend\org\util使用类库扩展:use org\util\ArrayList;$aa= new ArrayList();项目的公共类库application\common\util\ 下新建没有文件夹自行创建SESSION 的使用加载使用SESSION:use think\Session;//设置当前作用域Session::prefix('think');//赋值:(当前作用域)session('id','1');session('','1');//判断是否有值(当前作用域)session('?id');session('?');//取值(当前作用域)session('id')session('')//删除的值(当前作用域)session('id',null);session('',null);//清空session (当前作用域)session(null);$_SESSION=array();$_SESSION=[];//赋值:(think222作用域)session('id','1','think222'); session('','1','think222');//判断是否有值(think222作用域)session('?id','think222');session('?');//取值(think222作用域)session('id','','think222')session('')//删除的值(think222作用域)session('id',null,'think222');session('',null,'think222');//清空session (think222作用域)session(null,'think222');session 在模板中使用{:session('user_name')}{$Think.session.level}<if $Think.session.level >22232</if>cookie的使用加载使用cookie:use think\Cookie;// 初始化cookie(['prefix' => 'think_', 'expire' => 3600]);// 赋值cookie('name', 'value', 3600);设置cookie的前缀Cookie::set('name','yuepeng',['prefix'=>'think_','expire'=>3600])// 判断cookie('?name');判断前缀为think_的name的值cookie('?name','think_');// 获取echo cookie('name');//获取前缀为think_的name的值echo cookie('name','think_')// 删除cookie('name', null);//删除前缀为think_的name的值cookie('name', null,'think_');// 清除cookie(null);cookie(null, 'think_');1、请求或接受$data = input('post.'); //批量接受post的值$data = input('get.'); //批量接受get的值input('post.sn'); //接受传递来的POST数据中的SN input('get.sn'); //接受传递来的GET数据中的SN input('er_id'); //获取$_SESSION[user_id]值input('session.'); //获取$_SESSION值input('er_id') //获取$_SESSION[user][user_id]值halt() //打印并停止return json($aaa); 返回jsonif (request()->isGet()) echo "当前为 GET 请求";if (request()->isPost()) echo "当前为 POST 请求";if (request()->isAjax()) echo "当前为 Ajax 请求";if (request()->isMobile()) echo "当前为手机访问";重定向(301) $this->redirect('')$this->redirect(url('User/login'));php页面URL生成:url('index/blog/read','id=5');url('admin/goods/goodsList', 'id=5&name=thinkphp');html页面URL生成:{:url('index/blog/read','id=5')}request请求$request=Request::instance();没有加载父类值使用。

thinkphp 5手册

thinkphp 5手册

thinkphp 5手册
ThinkPHP 5 是一个基于 PHP 的开源的高性能 Web 应用开发框架。

它提供了强大的功能和灵活的扩展机制,使得开发人员能够快
速构建各种规模的 Web 应用程序。

ThinkPHP 5 的官方手册提供了
详细的文档和示例,帮助开发人员更好地理解和使用框架。

在 ThinkPHP 5 的手册中,你可以找到关于框架的安装、配置、路由、控制器、模型、视图、数据库操作、模板引擎、表单验证、
文件操作、缓存、日志、错误处理、插件开发、扩展开发等方面的
详细说明。

手册中还包括了框架的核心概念、设计理念以及最佳实
践等内容,帮助开发人员更好地理解框架的设计思想和使用方法。

此外,手册中还提供了大量的示例代码和实用的技巧,帮助开
发人员快速上手并提高开发效率。

开发人员可以通过手册快速查找
到他们需要的信息,并且可以根据手册中的指导进行实际操作和调试,从而更好地掌握框架的使用方法。

总之,ThinkPHP 5 的官方手册是开发人员学习和使用该框架的
重要参考资料,通过仔细阅读和实践,开发人员可以更好地掌握框
架的各项功能和特性,进而更高效地开发 Web 应用程序。

希望这些信息能对你有所帮助。

TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】

TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】

TP5框架model常见操作⽰例⼩结【增删改查、聚合、时间戳、软删除等】本⽂实例讲述了TP5框架model常见操作。

分享给⼤家供⼤家参考,具体如下:使⽤model 查询数据,添加数据,修改数据,删除数据聚合操作获取器,修改器⾃动添加时间戳(创建时间,修改时间)软删除1、使⽤model查询数据$res = User::get(1); //获取主键为1的数据,得到的是⼀个对象$res = $res->toArray(); //将对象转化为数组dump($res->name); //获取 $res ⾥ name 字段的值//使⽤闭包函数查询 id=1 的记录$res = User::get(function($query){$query->where("id","eq",1)->field('name')});$res = User::where("id",10)->value('name');$res = User::where("id",10)->field('name')->find();$res = User::column('email'); //查询所有的 email 字段值$res = User::where("id",">",5)->select(); //查询所有id⼤于5的记录$res = User::all('1,2'); //查询主键等于 1 或2 的记录foreach($res as $val) //转化为数组{dump($val->toArray());}//使⽤闭包函数查询 id<5 的记录$res = User::get(function($query){$query->where("id","<",5)->field('name')});2、使⽤model添加数据$res = User::create(['name' => 'yulong','pwd' => '123'],true); //第⼆个参数为true时,只添加数据表中已有的字段,不报错,不写则默认为false;;;true 也可以换成⼀个数组,数组⾥存放数据表中的字段,表⽰仅允许数组中的字段添加数据$res->id; //本次添加的⾃增iddump($res);$usermodel = new User;$res = $usermodel->allowField(true) //仅允许添加数据表中存在的字段,也可以写成数组->save(['name' => 'yulong','pwd' => '123']);dump($res->id); //获取新添加数据的⾃增id$usermodel = new User;$res = $usermodel->saveAll([ //⼀次保存多条数据'name' => 'yulong001','name' => 'yulong002']);dump($ers);3、使⽤model更新数据$res = User::update(['name' => 'yulong002'],['id'=>1]); //更新 id=1 的记录$res = User::update(['name' => 'yulong002'],function(){$query->where("id","LT",5); //使⽤闭包函数更新 id<5 的记录});dump($res);$res = User::where("id","<",6) //返回值是被更新数据的⾏数->update(['name' => 'hahahaha']);4、使⽤model删除数据$res = User::destriy(1); //删除主键为1的记录,返回影响数据的⾏数,也可以传递数组$usermodel = User::get(1);$res = $usermodel->delete();$res = User::where("id",5)->delete(); // where() ⾥⾯有三个参数,字段值,条件,数值dump($res);5、使⽤model聚合操作$res = User::where("id",">",5)->count(); //查询id⼤于5的记录条数// max 可以换成其他的如 min / sum / avg$res = User::max('num'); //查询 num 字段中的最⼤值$res = User::where("id","<",5)->max('num'); //id<5 的记录中的 num 最⼤值6、使⽤模型获取器//model//⽅法名: get字段名Attr//controller中获取原始数据使⽤ $res->getData()public function getSexSttr($val){switch($val){case '1':return "男";break;case '2';return '⼥';break;default:return '未知';break;}}7、使⽤模型修改器//model 修改器命名 set字段名Attr//修改器作⽤:在往数据库添加字段时,控制器中写未处理的数据,在模型中的修改器中写处理数据的⽅法,这样添加到数据库中的数据就是处理过得数据了public function setPwdAttr($val){return md5($val);}// $val代表 pwd 字段,$data代表接收到的所有数据,返回的值就是 pwd+emailpublic function setPwdAttr($val,$data){return $val.$data['email'];}8、⾃动往数据库中添加时间戳//⾃动往 time 字段中加⼊时间戳public function setTimeAttr(){return time();}//在数据添加时发⽣改变protected $insert = [ 'time_insert' ]; //设置字段public function setTimeInsertAttr(){ //将字段值设置为当前时间return time();}//在更新数据时发⽣改变protected $update = [ 'time_update' ]; //设置字段public function setTimeUpdateAttr(){ //将字段值设置为当前时间return time();}9、model时间戳// 数据库中的字段 create_time update_time// database.php 中更改配置 'auto_timeStamp' => true// 不推荐使⽤此⽅法,因为如果你的数据库表中没有对应的字段,程序可能就会报错// 可以单独在某个模型中添加属性protected $autoWriteTimeStamp = true; //开启⾃动加⼊时间戳protected $createTime = 'create_at'; //设置创建的时候写⼊的字段,值可以为false,关闭操作protedted $updateTime = 'update_at'; //设置创建和更新的时候写⼊的字段,值可以为false,关闭操作10、软删除// model// 数据表中的字段 delete_time,默认值可以为 nulluse traits\model\SoftDelete; //使⽤软删除的类class User extends Model{use SoftDelete; //在类的开头 use SoftDelete;protected $deleteTime = 'delete_at'; //设置软删除的字段,默认为 delete_time}$res = User::destroy(3,true); //删除主键为3的记录,第⼆个参数为 true 时,不是软删除,是tm真删了$ress = User::get(4);$res = $ress->delete(true); // delete() 没值时,为软删除;值为true,tm的真删// controller 获取到软删除的记录$res = User::withTrashed(true)->find(1); //得到id为1 的经过软删除删除的记录dump($res->getData()); //获取原始数据$res = User::onlyTrashed()->select(); //获取所有软删除的数据更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》。

tp5 controller用法

tp5 controller用法

tp5 controller用法TP5(ThinkPHP 5)是一种基于PHP的开源Web应用框架,广泛应用于Web开发领域。

其中的Controller(控制器)是TP5框架中的核心组件之一,用于处理请求并返回相应的内容。

本文将详细介绍TP5 Controller的用法。

一、控制器的创建在TP5框架中,控制器文件通常存放在application目录下的controller文件夹中。

我们可以通过以下步骤创建一个控制器:1. 打开命令行终端,进入项目根目录下的application目录。

2. 使用命令行工具创建一个控制器文件,例如"Test.php"。

代码示例:```php think make:controller Test```3. 创建成功后,可以在controller目录下看到生成的控制器文件。

二、控制器的基本结构每个控制器文件都有一个名为类名的类定义。

TP5框架规定,控制器类的命名规范为"控制器名+Controller",并且必须继承框架提供的基类Controller。

控制器类的基本结构如下所示:```php<?phpnamespace app\controller;use think\Controller;class Test extends Controller{// 控制器方法public function index(){// 方法内的逻辑代码}}```三、控制器方法的定义控制器中的方法用于处理请求,并根据业务需求进行相应的操作。

每个控制器方法都对应一个URL地址,每次请求该地址时,框架会自动调用相应的控制器方法进行处理。

在控制器类中,我们可以定义多个方法来处理不同的请求。

例如,我们在Test控制器中定义了一个名为"index"的方法,代码如下:```phppublic function index(){// 方法内的逻辑代码}```四、控制器方法的参数控制器方法可以接收来自URL的参数或从其他途径传递过来的参数。

[笔记]Tapestry5最新中文教程

[笔记]Tapestry5最新中文教程

Tpestry for Nonbelievers作者Rent Zubirov & Igor Drobizko译者沙晓兰发布于 2008年7月2日下午9时30分社区Jv主题Web框架引言pche Tpestry是一个使用Jv语言创建web应用的面向组件的开发框架。

Tpestry 应用建立在根据组件构建的页面的基础上。

这个框架能够提供输入验证(input vlidtion)、本地化/国际化(locliztion/interntionliztion)、状态/持续性(stte/persitency)管理、URL构建/参数映射(prmeter mpping)等功能。

为什么Tpestry值得推荐呢?一部分原因是:∙它便于终端用户使用。

Tpestry在设计最初就考虑到了应用的安全和伸缩性,有内嵌的jx、输入验证、国际化以及异常报告功能。

∙它便于开发人员使用。

Tpestry独一无二的类重加载(clss-reloding)特性大大地推动了开发人员的开发效率。

借助于 Tpestry,对源代码的修改立马就可以看到结果,不需要重新部署和启动应用!它的异常报告也极为具体,甚至提供可能的修正建议。

∙它便于web设计者使用。

Tpesry页面是有效的HTML(或XHTML)文件!你可以用自己喜欢的浏览器打开这些页面。

∙它封装了最佳实践:REST风格的URL、可降解的JvScript、没有XML的配置等等。

∙它支持与Hibernte、Spring、Sem、cegi等框架的集成。

本文中,我们会向大家介绍Tpestry框架版本5。

我们将利用Tpestry 5开发一个简单的具有创建/读/更新/删除功能的应用,在创建这个应用的过程中,你将体会到Tpestry带来的开发效率的提升。

我们会从多方面来讲解 Tpestry应用,比如应用的页面导航(pge nvigtion)、依赖性(dependency)和资源注入(resource injection)、用户输入验证(input vlidtion)和应用状态管理(stte mngement)等等。

TP5-with方法

TP5-with方法

TP5-with⽅法TP5hasMany('关联模型名','外键名','主键名',['模型别名定义']);model 模组<?phpnamespace app\index\model;use think\Model;/*** Created by PhpStorm.* User: Administrator* Date: 2020/1/2* Time: 22:06*/class Banner extends Model{public function comments(){return $this->hasMany('Comment','memberid','px')->field('id,goodsid,memberid,content,add_time');}}<?php/*** Created by PhpStorm.* User: Administrator* Date: 2020/1/2* Time: 22:11*/namespace app\index\model;use think\Model;class Comment extends Model{}控制器<?phpnamespace app\index\controller;use app\index\model\Banner;class Index{public function index(){$article =new Banner();$arr = Banner::with('comments')->paginate(1);echo "<pre>";foreach($arr as $key => $value){print_r($value->toArray());}// return View('index');}}修改数据字段原有模型中利⽤获取器替换<?phpnamespace app\index\model;use think\Model;/*** Created by PhpStorm.* User: Administrator* Date: 2020/1/2* Time: 22:06*/class Banner extends Model{public function comments(){return $this->hasMany('Comment','memberid','px')->field('id,goodsid,memberid,content,add_time'); }public function getUrlAttr() //获取器使⽤修改URL参数{return $this->hasMany('Comment','memberid','px')->value('content');//修改URL 参数}}有更好的⽅法可以评论告诉我 PHP⼩⽩⼀名最近在⽤TP5写项⽬!谢谢!模型获取器⾃定义字段<?phpnamespace app\index\model;use think\Model;/*** Created by PhpStorm.* User: Administrator* Date: 2020/1/2* Time: 22:06*/class Banner extends Model{protected $append = ['typeText'];public function comments(){return $this->hasMany('Comment','memberid','px')->field('id,goodsid,memberid,content,add_time'); }public function getUrlAttr(){return $this->hasMany('Comment','memberid','px')->value('content');}public function getTypeTextAttr($value, $data){return $this->typeText[$data['url_type']] ?? '12121';}}。

ThinkPHP5入门(基础篇)

ThinkPHP5入门(基础篇)

ThinkPHP5入门(基础篇)ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用和API开发提供了强有力的支持。

下面我就重点介绍ThinkPHP5新手需要配置的地方1、入口文件ThinkPHP5.0版本的默认自带的入口文件位于public/index.php (实际部署的时候public目录为你的应用对外访问目录)2、资源访问网站的资源文件访问不会影响正常的操作访问,只有当访问的资源文件不存在的时候才会解析到入口文件,一般就会提示模块不存在的错误。

网站的资源文件一般放入public目录的子目录下面,例如下面是一个建议规范:public├─index.php 应用入口文件├─static 静态资源目录│ ├─css 样式目录│ ├─js 脚本目录│ └─img 图像目录记住,千万不要在public目录之外的任何位置放置资源文件,包括application目录。

访问资源文件的URL路径是:/static/css/style.css/static/js/common.js/static/img/picture.jpg当然,你也可以更改资源文件的URL路径,在config.php中配置如下:// 视图输出字符串内容替换'view_replace_str' => ['__static__' => '/static'],访问资源文件的改变后URL路径是:<link href="__static__/css/bootstrap.css" rel="stylesheet">3、调试模式ThinkPHP支持调试模式,默认情况下是开启状态(5.0.10+版本开始,默认关闭调试模式,需要自己开启)。

分享一个TP5实现Create()方法的心得

分享一个TP5实现Create()方法的心得

分享⼀个TP5实现Create()⽅法的⼼得在TP5中发现⽤不了以前3.X的Create()⽅法,虽然⽤input更严谨,但是字段⽐较多的话还是有些不艺术的3.X中的实现⽅法如下:$Model = D('User');$Model->create();$Model->add();在仔细阅读了TP5⽂档后,发现有这么⼀段:欣喜之余便测试了⼀下,发现返回的内容是个类,不能直接做修改,只能接着连贯操作:app\category\model\Category Object([connection:protected] => Array()[name:protected] => Category[table:protected] =>[class:protected] => app\category\model\Category[pk:protected] =>[error:protected] =>[validate:protected] =>[field:protected] => Array()[visible:protected] => Array()[hidden:protected] => Array()[append:protected] => Array()[data:protected] => Array([title] => dd[sort] => 1[pcid] => 0)[change:protected] => Array()[auto:protected] => Array()[insert:protected] => Array()[update:protected] => Array()[autoWriteTimestamp:protected] =>[createTime:protected] => create_time[updateTime:protected] => update_time[deleteTime:protected] => delete_time[dateFormat:protected] => Y-m-d H:i:s[type:protected] => Array()[isUpdate:protected] =>[updateWhere:protected] =>[relation:protected] =>[failException:protected] =>)仔细看了⼀下,当中有这么⼀段是我post的数据:[data:protected] => Array([title] => dd[sort] => 1[pcid] => 0) 翻看了⼀下tp5的model类,有这么⼀个⽅法:/*** 获取对象原始数据如果不存在指定字段返回false* @access public* @param string $name 字段名留空获取全部* @return mixed* @throws InvalidArgumentException*/public function getData($name = null){if (is_null($name)) {return $this->data;} elseif (array_key_exists($name, $this->data)) {return $this->data[$name];} else {throw new InvalidArgumentException('property not exists:' . $this->class . '->' . $name); }}调⽤了⼀下,果然可以获取到post的数组了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

tp5入门开发手册笔记
一:基础1.
2.
3.
E:\wamp64\www\tp5\public/.. 进入了public的上一级目录该路径相当于E:\wamp64\www\tp5\
4.
5.默认的应用目录结构,下面只有一个index模块
├─application 应用目录(可设置)
│ ├─index 模块目录(可更改)
│ │ ├─config.php模块配置文件
│ │ ├─common.php模块公共文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
│ │
│ ├─command.php命令行工具配置文件
│ ├─common.php应用公共文件
│ ├─config.php应用配置文件
│ ├─tags.php应用行为扩展定义文件
│ ├─database.php数据库配置文件
│ └─route.php路由配置文件
6.千万不要在public目录之外的任何位置放置资源文件,包括application目录。

7.
二:URL访问和定义路由
1.
http://domainName/index.php/模块/控制器/操作
2.
3 参数传入
控制器方法会自动获取URL地址中的同名参数值作为方法的参数值,而且这个参数的传入顺序不受URL参数顺序的影响。

(默认情况下,不按顺序绑定参数)
4 针对路由(访问url)的处理是web服务器的事
5 在路由定义文件(application/route.php)里面添加一些路由规则,可以简化路由。

6 生成url 使用助手函数
url('blog/read', 'name=thinkphp');
{:url('blog/read', 'name=thinkphp')}
路由的知识很多现在只要明白4.5.6就行了
三 Request请求对象和Response响应对象 Request请求对象
1.Request对象是从客户端向服务器发出的请求,包括用户提交的信息以及客户端的一些信息。

客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过Request对象的相关方法来获取这些数据。

Request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

2.
3.
4.request请求动态绑定属性
5.助手函数就是系统提供的快捷方法直接使用即可!
6. Request() input() url() input()和$request->param()是一样的
7.Request请求对象获取变量的方法
8.Request请求对象获取请求参数的方法
9.Request请求对象获取URl信息的方法
10.Request请求对象获取
11.Request请求对象获取获取路由和调度信息
Response响应对象
1.自动输出大多数情况,不需要关注response对象,只需要在控制器的操作方法中返回数据即可。

默认输出html文件。

在必要的时候,可以手动输出类型和参数。

2
四数据库(Db类操作数据库)
1.
2.如果使用了多个模块,并且不同的模块采用不同的数据库连接,那么可以在每个模块的目录下面单独定义数据库配置。

3.查询构造器基于PDO实现
4. Insert update select delete 后三者基本是基于id
5. 链式操作查询
6.事务(略过)
五查询语言(查询构造器)
A 查询表达式
1.查询某个字段等于某个值的记录
2.find方法用于查找满足条件第一个记录(即使你的查询条件有多个符合的数据),如果查询成功,返回的是一个一维数组,没有满足条件的话则默认返回null(也支持设置是否抛出异常)。

3.使用表达式查询,where方法的参数依次为where( 字段名,条件表达式,查询值 ) 所以与等
效。

4.select方法用于查询数据集,如果查询成功,返回的是一个二维数组,如果没有满足条件的话则返回空数组(也支持设置是否需要抛出异常)。

5.多个字段查询
6.
B 批量查询(这个应熟练掌握)
C 快捷查询
D 视图查询(暂时略过)
获取数值
获取列数据
支持获取某个列的数据,使用column方法
时间(日期)查询
分块查询(略过)
六、模型和关联
A 模型定义
1.一般来说,每个数据表会和一个“模型”对应。

2.模型类代表表一个模型类对象实例就是一条记录字段就是模型类的属性。

3.模型是一种对象化的操作封装,而不是简单的CURD操作,简单的CURD操作直接使用前面提过的Db类即可。

4.模型类和Db类的区别主要在于对象及业务逻辑的封装,Db类的查询默认返回的是数组(或者集合),而模型类返回的是当前的模型对象实例(或者集合),模型是比Db类更高级的数据封装,支持模型关联、模型事件和业务(逻辑)方法。

5.一般来说,一个应用的模型都是公用的,不区分模块,所以不必在每个模块下面定义模型。

B 基础操作
1.新增数据在控制器中操作新增 $user->save()
更新 $user->isUpdate()->save() 上面$user是实例化的模型对象
最常用的新增数据方式
新增是模型类实例化后save 查询是模型类get()
更新是在查询后update() 删除是在查询后update()
C 读取器和修改器。

相关文档
最新文档