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

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

/ 猿问

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

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


http://img1.sycdn.imooc.com/5913cbbb00010bc707201191.jpg


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


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


http://img1.sycdn.imooc.com/5912797900014a2c07200066.jpg


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


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


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


http://img1.sycdn.imooc.com/5911a3250001fb5607200066.jpg


 http://img1.sycdn.imooc.com/5911a33d0001df6507200826.jpg

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

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


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

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


http://img1.sycdn.imooc.com/59152f590001d9f307201067.jpg


查看完整描述

34 回答

?
王晋渤
提问是在这里提问吗还是在哪里?
查看完整回答
1 反对 回复 2017-05-11
?
野生码农在线co腚

可以问关于求职类的问题吗

查看完整回答
1 反对 回复 2017-05-09
点击展开后面4
?
潦草风尘

老师好,我有点搞不清楚命名空间  自动装载类  全局空间 全局函数这四个概念的区别,请问能简单聊聊么?

查看完整回答
反对 回复 2017-05-15
?
buzhaodi
老师您好,我在使用db这个函数的时候 有人告诉我说这种方法不利于缓存的管理。能讲讲为什么么?还有如果考虑性能 数据库要怎么被调用才好?
查看完整回答
反对 回复 2017-05-14
?
_小_七_

老师,请问tp5足以应对高并发吗?如电商的抢购、双十一活动这些,这些场景的代码要从什么角度考虑去写呢?

查看完整回答
反对 回复 2017-05-14
  • singwa
    singwa
    您好,高并发的处理基本是靠服务器来处理的,比如做负载均衡,数据库层做分布式处理,当然这是个大体的方向,具体细节还需要根据自身的业务来定,但是一个原则PHP层代码的话也是需要考虑一些性能的,比如PHP查询数据的时候需要做到性能上的高效
  • singwa
    singwa 回复 singwa
    当然还有缓存、队列场景的使用。具体要看场景。
?
让自己发光

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


查看完整回答
反对 回复 2017-05-13
  • singwa
    singwa
    这个问题已经回复,应该在第一页,因为你提了2个一样的问题。
?
深蓝_0006

Thinkphp号称为API而生,但是具体体现在哪一块,且文档,论坛都没有个具体针对性的说明。能讲讲用Thinkphp开发API有哪些优势吗?

查看完整回答
反对 回复 2017-05-12
?
反贪局局长

sinwa老师为什么这么帅?

查看完整回答
反对 回复 2017-05-12
?
jbone
能不能讲讲tp5和其他版本的最大的区别?
查看完整回答
反对 回复 2017-05-11
  • singwa
    singwa
    您好,我主要讲解tp5和tp3的一些区别,如下 一、控制器 1、tp5控制器的类名默认不携带了Controller后缀,tp3需要携带Controller后缀 2、tp5控制器的方法中用return返回内容, 二、函数 1、tp5单字母函数废弃了,比如C M D方法,默认系统加载助手(helper.php)函数 。 三、默认返回值 1、tp5模型查询的时候返回默认是个‘对象’,系统默认增加了'toArray'方法来转换。 四、数据库 1、tp5的数据库查询功能非常强大,tp3需要通过模型才能使用的链式查询,现在tp5可以直接通过Db类调用,原来的M函数调用可以改用db函数 等 2、tp5的模型查询增加了静态方法 五、异常 1、tp5对错误级别是零容忍,默认情况下会对任何级别的错误抛出异常,当然新版本重新设计了异常页面,页面也比之前好看多了,展示了详尽的错误信息,便于调试,非常方便 六、tp5完全支持惰性加载 1、tp5完全支持了惰性加载,这点性能较比之前好多了。 当然还有很多不一样的地方,您可以查阅tp5的源码看看。最后㊗️您学习愉快
?
我是新手_请多指教

新手学完基础,是否直接学习最新的tp5.0版本,旧版本要学习了解吗?

查看完整回答
反对 回复 2017-05-11
?
青青的河边草

讲讲路由


查看完整回答
反对 回复 2017-05-11
  • 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(执行模块方法)、大致就这么回事
首页上一页12下一页尾页

添加回答

回复

举报

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