为了账号安全,请及时绑定邮箱和手机立即绑定

【花式填坑第3期】与BAT大咖共同探讨 高性能框架ThinkPHP5.0

/ 猿问

【花式填坑第3期】与BAT大咖共同探讨 高性能框架ThinkPHP5.0

慕女神 2017-05-09 19:13:45


http://img.mukewang.com/5913cbbb00010bc707201191.jpg


上一期的“人生苦短 我用Python”的话题活动中,收到了用户的大力追捧。这归根于老师专业又耐心的为大家一一解答学习编程的问题。


如今,第三期花式填坑来了,讨论的话题是ThinkPHP5.0!


http://img.mukewang.com/5912797900014a2c07200066.jpg


ThinkPHP作为为数不多的“中文PHP框架。从ThinkPHP1.0开始就备受关注,到如今已经进化到ThinkPHP5.0版本,期间收获了很多肯定。


如今,较为成熟的ThinkPHP5.0版本也有了更多神奇的新特性,比如变得更加方便、更加好用,性能上得到了较大提升,只要熟练掌握技能点就可以轻松开发一套服务系统,听起来是不是充满期待?


本周,我们就来聊聊关于神奇的ThinkPHP5.0。


http://img.mukewang.com/5911a3250001fb5607200066.jpg


 http://img.mukewang.com/5911a33d0001df6507200826.jpg

 Singwa老师的个人主页,点击可查看

---------------------------------------------------------------------


话题交流时间:5月12日--5月14日

话题交流方式:在下方进行提问,老师会在活动期间一一给大家回复的


http://img.mukewang.com/59152f590001d9f307201067.jpg


查看完整描述

34 回答

?
一朵小可爱

老师好,老师能讲讲Thiknphp5在性能上的提升大不大,具体有哪些提升?

查看完整回答
20 反对 回复 2017-05-10
  • singwa
    singwa
    比如:tp5中使用到的是懒性加载,怎么理解呢?这种方式只在需要的时候才加载相关的类文件,它相比于之前的版本性能上提升了不少。
?
慕粉3738585
Singwa 老师我是您忠实的粉丝,很喜欢你的课程,请问我们这种小白如何快速的成为技术牛人呢。?希望给我一些建议
查看完整回答
11 反对 回复 2017-05-12
  • singwa
    singwa
    首先多谢您支持我的课程! 关于如何快速成为技术牛人?这个是需要时间的积累的,不能一撮而就的,我认为您可以从以下几点做好准备工作: 第一:熟练掌握PHP的基础知识 第二:学好一个框架,比如thinkphp YII等,切记一定要熟练的掌握一个框架,要非常清楚的理解框架的原理,核心。那么这方面如何去学习呢? 1、先看看框架的文档,然后边看边去操作;2、通过框架做一个实战的项目,如果前期没有项目经验的可以看看慕课网的实战课程, 3、在实战完成后,要多去看看框架的源码,这有利于您理解框架的思想,这个是很有必要去学的,在这过程当中你会对PHP有更高的认知,对你的技术当然是一个质的飞跃,前提是你需要坚持 第三:到公司后 才是您技术提升的关键因素,这个时候你必须要多去做一些项目,在项目中发现自己的不足,并且快速的去补充自己的知识,当然不能只是为了完成项目的功能,我们需要不断的挖掘新的技术方案,什么方案适合当前的项目,并且能够做到更好的优化项目的性能,这个过程当前您会成长很多 第四:多和公司的技术牛人沟通技术,从他们身上学到核心技术,这比你自学要快很多,因为有个引路人比什么都重要。 第五:到公司后建议 学习的技术有: 1、MySQL数据库优化 2、nosql知识 比如:redis mc mongodb等 3、消息队列服务:如rabbitmq kafka等 4、第三方搜索引擎服务:如elasticsearch, sphinx等 5、分布式 、负载均衡 等等 最后祝您学习愉快。
?
慕虎7231881

Thinkphp在国内受欢迎的原因是啥?使用简单么?

查看完整回答
11 反对 回复 2017-05-10
?
7zzz

老师Tp5路由分发原理是什么?求解答

查看完整回答
7 反对 回复 2017-05-10
  • singwa
    singwa
    1、thinkphp5中一个典型的URL请求的执行过程大致如下: 用户请求 -> 路由解析 -> 调度请求 -> 执行操作 -> 响应输出 2、路由在框架中的作用打个比方的话,路由好比是WEB应用的总调度室,对于访问的URL地址,路由可以拒绝或者接受某个URL请求,并进行分发调度,而且还有一个副作用是因为路由规则可以随意定义,因此可以让你的URL请求地址更优雅,因为不会暴露实际的URL地址,也就意味着更安全,5.0的路由不仅仅只是支持路由到控制器的操作方法,甚至可以路由到任何的类或者闭包。 3、那么我们来分析下路由内部做了哪些事情,还是列举一个简单的例子 url请求过来会执行 App类里面的run方法,这个方法中tp5会去检测路由,也就是routeCheck方法,这个方法会去加载application应有目录下的route.php,这个文件其实就是我们自定义的一些路由规则 , 然后再通过tp内置的Route类库批量注册路由, 比如如果我们在route.php里面注册了这么一个路由信息'test' => 'index/index/test' (备注:比如我们访问xxx.com/test 实际上他是定位到xxx.com/index/index/test) 那么这些信息就会被Route基础类库注册到路由中,之后需要做的路由检测(根据路由定义返回不同的URL调度),这个时候需要分2种情况 ,第一种情况:检测后有值(备注:比如这种地址xxx.com/test的访问) 第二种情况:无内容、这说明当前的url请求不在自定义的路由配置中(比如最简单的xxx.com/index/index/index这个地址的访问),那么这个时候会执行Route::parseUrl这个解析,但是不管怎么样这两种情况的结果返回的都是如下格式: Array ( [type] => module #类型 tp5中有好几种 具体几个类型可以参考App类里面的exec方法 [module] => Array ( [0] => xxx #模块 [1] => xxx #控制器 [2] => xx #方法 ) ) 4、接下来会根据上面返回的内容 来记录当前调度信息,然后会去执行app类里面的exec方法,我们已type=module来举例, 之后就会去执行App类里面的module(执行模块方法)、大致就这么回事
?
慕小樱

现在PHP的开发,都需要会这个thinkPHP吗?目前企业人才招聘有硬性要求这项吗

查看完整回答
5 反对 回复 2017-05-11
  • singwa
    singwa
    您好,其实我个人认为框架只是一个工具,学好一个就行,因为框架的基本思想都差不多,万变不离其宗,等你学好了一个,你学习其他的就会很快。 在国内的话thinkphp用的还是挺多的,企业招聘也不完全硬性要求这项,建议学习框架的时候一定要去学习框架的思想,多去读他里面的源码,这有利于您的理解。
?
zhangmin_0001
老师 我想问一下 tp5里面 很多地方这也可以那也可以 到底应该怎么用
查看完整回答
5 反对 回复 2017-05-10
?
qq_反向吸烟_0
Singwa 老师 从你的TP3到TP5我一直在看,也学的很好,是你让我知道了什么是项目,是你让我再次找到信心,感谢一路上有你的陪伴,希望以后还能继续学习你的课程
查看完整回答
3 反对 回复 2017-05-12
?
14cat

老师能讲一下tp5的队列吗

查看完整回答
3 反对 回复 2017-05-12
  • singwa
    singwa
    您好,队列的话一般是借助第三方服务来做,比如: 1、rabbitmq 2、kafka 3、redis也可以做。 这些的话需要您先部署服务,比如拿rabbitmq来说的话,您先在服务器上部署这个服务,然后官网会有关于这个服务的php类库,然后放到你tp5中,当然也可以修改为适配你tp5的rabbitmq-php类库, 这个类库里面有队列相关的一些操作的方法。
  • 14cat
    14cat 回复 singwa
    谢谢老师~
?
王晋渤

还有个问题就是可不可以解析一下thinkphp下面的文件结构,运行原理以及一些相关的类库介绍。

因为有时接了一些小项目,比如一个留言本或是一个订单系统,也许就用了简单的一些功能比如Db类库,模板fetch,还有一些简单的路由和配置文件之类。我意思就是把tp在进行瘦身,只用一些常用的类库。

但就是不知道,他的运行原理,哪些是基础也就是必须要有他才能运行的,比如一些不需要use的就可以删了。

之前帮别人写了一个,表单填写后入库的,就一个页面,也复制了整个框架进去,看起来就有点太大才小用了。

查看完整回答
3 反对 回复 2017-05-11
  • Yirrran
    Yirrran
    就一个表单入库直接复制框架用吗?
  • 王晋渤
    王晋渤
    就想用封装的Db类呢。
  • singwa
    singwa
    我说下tp5框架里面的一些核心目录和文件把,thinkphp目录下是框架的源码,所有的app下的内容都是需要依赖它,所以他特别的重要和关键, 1、library目录为框架核心类库目录,它下面有think和traits两个目录,框架的类库包文件全在think目录下,比如db操作、控制器、模型、配置、分页处理等等核心的类库都在这,他是整个框架的灵魂。 2、base.php 基础定义文件,这个文件定义下框架的一些基本常亮 比如APP_PATH DS等 3、convention.php 这个文件定义了系统一些默认的配置文件 如app_debug等 4、helper.php 助手函数文件,这个里面定义了很多非常好用和实用的方法,比如input等。 5、start.php 框架引导文件,每一个http请求都会执行它 开发者需要熟练的掌握以上的内容。
?
木白121

 新版本的thinkphp5如何获取pathinfo模式的参数内容呢?比如   xxx.com/index/cmd/add/id/1  ,用input('get.id') 根据获取不到内容,请我老师如何破解这个? 


查看完整回答
2 反对 回复 2017-05-13
  • singwa
    singwa
    您好,可以使用input('param.id')来获取就可以了,您试试,建议看看thinkphp的源码,里面有这个param的用法。最后祝您学习愉快。
?
慕粉0057536294
singwa老师您的tp5课程我是购买了,但是您能否就tp5进行瘦身减少不必要的案例文件?现在都超过了100m的大小,希望老师出一份瘦身的文档、哪些能减少、哪些能删除、大概讲一下、我自己虽然瘦身过您的那份文件、但是还是有超过50m的大小
查看完整回答
2 反对 回复 2017-05-12
  • singwa
    singwa
    您好,100M的那个是后台静态资源, 其实他就是一个第三方的前端框架,课程里面有说明。 你可以根据自己的情况对不必要使用的静态页面和插件 删除。这个是不是TP5课程的重点
  • 智祥
    智祥
    换框架……
?
王晋渤

开发了一个商城后需要用户自己布署一个二级域名,我看手册上用路由来实现!

那么在域名解析那里是不是还要添加解析记录呢?如果都要去添加解析记录,那用户多了,那岂不是很麻烦。


查看完整回答
2 反对 回复 2017-05-11
  • singwa
    singwa
    您好,请把“商城后需要用户自己布署一个二级域名” 这种需求再描述清楚
  • 王晋渤
    王晋渤
    比如,就拿你这个多商家平台入驻来说,我注册成为商家以后。会给我生成一个二级域名,假设我的用户名是aaa,那么这个平台就会给我一个aaa.o2ocms.com的二级域名。像这样的二级域名布署,我们应怎样来做呢?
  • singwa
    singwa
    没必要每个商户开一个二级域名, 作为这种o2o的系统,每个城市开个二级域名还是挺常见的。
点击展开后面1
?
韩显成

laravel对比thinkphp5有哪些优点和缺点

查看完整回答
2 反对 回复 2017-05-10
?
puieg

请问老师,我现在的话大三下学期,现在只能基本掌握php的知识:能写一个基本的个人博客;我想请问一下老师,要是我学习tp5以及实战的话是否可以去找一个暑假实习!谢谢

查看完整回答
1 反对 回复 2017-05-15
  • singwa
    singwa
    您好,学习的话需要把之前的一些东西串起来,灵活运用,我先推荐您一个大致的方向: PHP篇 1、熟练掌握PHP的基础知识,数组、字符串、函数、面向对象 常用设计模式 2、学好一个框架,比如thinkphp YII等,切记一定要熟练的掌握一个框架,要非常清楚的理解框架的原理,核心。 3、通过框架做一个实战的项目,如果前期没有项目经验的可以看看慕课网的实战课程 - 加分篇 4、(如果时间如许的话)在实战完成后,要多去看看框架的源码,这有利于您理解框架的思想,这个是很有必要去学的,在这过程当中你会对PHP有更高的认知,对你的技术当然是一个质的飞跃,前提是你需要坚持 - 这个为加分篇 Mysql篇 1、mysql的基本用法 2、mysql常用的优化 - 加分篇 3、PHP操作mysql 4、mysql主从分离技术 - 加分篇 linux篇 1、常用的Linux一些命令 2、vim的使用 3、Linux环境下 部署和配置相关服务如nginx mysql apache等 - 加分篇 算法篇 1、常用算法掌握 - 加分篇 前端篇 1、html css js jquery 等 其他篇 1、如果时间如许 可以学学redis monogdb 消息队列服务rabbitmq或者kafka ,搜索引擎sphinx 或者 es
  • walker02
    walker02 回复 singwa
    singwa这个回复好厉害啊,一条大路就出来了,非常赞同
?
王晋渤

老师好,希望以后还是专门有一个提问区,老师空了能统一回复一下,估计老师也忙QQ上想及时回复也困难。我这有三个问题,继续追问了哦!

1、老师说要录新课程,请问课程在录没有呢?何时能上线啊?这次一定得来一个高逼格的,来点刺激的。

2、开发一个小系统,怎样做域名授权?

    我看网上有一些cms或是订单系统,源码可以提供下载在本地使用调试,如果要上传到互联网上使用就需要对域名授权,授权后才能访问或使用!这个是怎样做到的呢?如果我不做授权,我直接给源码,别人也可以把源码进行转卖,还有一种说法你都给源码了,如果是有经验的开发者也会直接破解的。

3、怎样避免在模板文件中使用php代码?

     比如我想在文章详情页显示该文章的所属分类,因为分类字段在文章表中存的是分类ID,现在我就是在详情中又用Db去调用了一下查询。同理我做文章的评论的时候也是,在文章详情页也是用的Db去重新循环输出的评论内容。

//img.mukewang.com/59191f4a0001337625601600.jpg

这个是我在模板里面写的。

 {php}

    use think\db;

    $catelog=Db::name('catelog');

    $arr['id']=$v['catelog_id'];

    $ret=$catelog->where($arr)->find();

    echo $ret['title'];

    {/php}


查看完整回答
1 反对 回复 2017-05-15
?
让自己发光

提问:thinkphp5的分页处理的时候和thinkphp3有点不一样,我用对象调用了render方法,可以分页,但是如果url地址里面有参数的时候根本在分页的地方获取不到,并且下一页的url根本没这些参数,感觉tp5好坑,这个要怎么弄呢?在线等,着急。谢谢老师!


查看完整回答
1 反对 回复 2017-05-13
  • singwa
    singwa
    您好,看到您连续提问了2条一样的内容,看来确实很着急哈, 你的用法可能用错了,您需要如下方式使用试试 $params = request()->param(); $obj->appends($params)->render() $obj就是你上面说的对象。 试试,希望能帮到您,祝您学习愉快。
?
树叶泡过的水

我在学习课程时,在使用Uploadfidy插件,老是出现路径不对的问题,不太了解Tp5路由,请问是不是和我报错有关系呢?

thinkphp与其他框架的优势是什么呢?

查看完整回答
1 反对 回复 2017-05-13
  • singwa
    singwa
    是不是提示你抛送的接口404呢? 一般这种情况您需要先定位到浏览器中接口返回的内容是什么,在response模块,tp5提示404有两个情况,第一:确实不存在这个地址, 第二:这个接口内部有错误 如果是第一个情况那么我们需要排查是不是文件名新建错了等,如果是第二个情况,那么我们就需要根据错误提示来排查了,具体排查需要根据您的错误提示来。 关于thinkphp和其他框架的优势,我个人认为tp在国内很多年了,并且有很大的用户群体,也特别的成熟,文档也非常多,关键一点是tp容易学,非常容易上手,开发效率也特别的高。 最后㊗️您学习愉快。
  • 树叶泡过的水
    树叶泡过的水 回复 singwa
    谢谢老师的指点与鼓励!
?
吃了饿饿了又吃

Singwa老师,好。太感谢了。 能不能继续深挖,出个新课程做发散补充。tp5在移动端的项目开发:包括移动端网页,微信的另几种支付场景,以及支付宝支付。特别苦恼的是项目的上线,就是线下做好的,上线又遇到非常多的坑,这些坑自己爬出来非常耗费时间,有个人指点下会好很多。慕课网,其他课程也是有其中一部分的(上线、移动端等),但因为框架不一样,要学其他的做铺垫,我们tp5都只是入门。。。能不能出一些类似于“安装包”,围绕你的课程体系,做一些补充课程。作为你这个门派的同学想学,就订一些,学过的就不用订了。这样,出的课程速度也会快,有针对性。Signwa,继续带我们飞。

查看完整回答
1 反对 回复 2017-05-13
点击展开后面5
?
Mr_狼先生

TP对原生PHP改变太大,久了之后就不会原生了,咋办啊老师

查看完整回答
1 反对 回复 2017-05-13
  • singwa
    singwa
    框架的本质是为了快速开发,用框架你不能局限的停留在会用的阶段,您还应该要去理解,怎么说呢?比如你使用tp5的input方法,你看看文档就会使用,但是我们需要理解input方法的工作原理,这个时候就需要您阅读他的源码了,同样的道理其他的也一样,所以要想学好一门框架必须要通读里面的源码,看看框架的工作原理以及核心,这样您才能够更好的理解框架,并且您也可以优化框架本身的内容,所以这样您就不会产生 不会原生的了。最后祝你学习愉快
?
橙橙同学爱编程

singwa老师 tp5在缓存上的支持怎么样 如何能在这个框架的基础上完成队列机制?

查看完整回答
1 反对 回复 2017-05-13
  • singwa
    singwa
    您好,静态缓存(生成在runtime里面的静态文件)在tp5中可以使用助手函数cache来操作,但如果需要使用更高级的缓存的话,比如redis,这个时候需要我们在服务器中安装redis的服务,然后开启扩展(window:redis.dll, linux:redis.so),并且还需要写一个PHP操作redis的类库文件放入tp5中,这样我们才能方便和高效的使用redis缓存。 关于队列的话也是需要我们学一套服务的,比如rabbitmq或者kafka,同理也需要我们安装这个服务,就拿rabbitmq来说,我们先在服务器上安装rabbitmq, 然后官网提供了PHP操作rabbitmq的类库,我们可以把这种类库放入tp5的extends目录下,当然需要修改为适配TP5的类库文件, 这样我们就可以操作队列了。最后祝您学习愉快,有问题欢迎随时沟通。
首页上一页12下一页尾页

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信