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

【花式填坑第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 回答

?
G_Ling

ThinkPHP 要怎么学习呢?求解

查看完整回答
1 反对 回复 2017-05-12
  • singwa
    singwa
    您好,可以从以下几个维度来学 1、首先您需要有PHP基础,需要了解PHP面向对象 ,mvc等基础知识 2、学习tp的基础知识 可以从tp官网的文档入手,里面有一些基础的用法,边看边去操作,这样有利于加深理解,最基本的知识点比如入口文件,配置文件,控制器、模型、视图层、基础类库,helper.php里面的公用方法等等,这些最基本的需要掌握。 3、做一套tp的实战项目 这样才能将实战项目和框架紧密联系在一起,有利于您深入学习TP 4、tp的进阶就是需要您通读tp里面的源码。
?
慕粉0958041534
老师谈下tp单元测试这块
查看完整回答
1 反对 回复 2017-05-12
  • singwa
    singwa
    您好,tp5的单元测试需要依赖很多库首先你需要下载这些依赖的类库文件,可以通过composer安装,命令如下: composer require topthink/think-testing,这个时候在根目录会多了一个tests目录,那么可以在这个目录下编写您的单元测试文件,您可以新建一个测试用例类 在tests目录下新建一个IndexTest.php的测试用例类,并在其中键入一下的代码: <?php namespace tests; class IndexTest extends TestCase { public function testTest() { $this->visit('/index/index/test')->see('test singwa'); } } 该用例是继承tp5单元测试扩展类TestCase的。它提供了多个用于支持tp进行单元测试的方法。如visit方法是接受一个作为URI的参数模拟向TP框架中的某个测试发起请求。而see方法则是断言输出的结果是否符合一个正则表达式,其中第一个参数为要匹配的正则表达式,第二个参数的值为true时断言正则表达式不出现在结果中,为false时断言正则表达式出现在结果中,默认为false。 然后在根目录下执行命令:php think unit 再看看控制台的运行结果: 在结果的最后一行中,显示OK,说明所有的测试用例都测试通过了。。
?
王晋渤
提问是在这里提问吗还是在哪里?
查看完整回答
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个一样的问题。
?
qq_SlimNO1_0
别逗啦!什么高性能,纯瞎掰,使用PHP框架就别谈什么高性能、高并发了,刚前几天用CI做接口结果并发根本上不去,Nginx代理3台负载,做个helloworld结果QPS达不到3000,换成Lumen测试结果依旧这样。
查看完整回答
反对 回复 2017-05-13
  • singwa
    singwa
    您好,单纯的测试qps的话,要考量的因素也很多,比如您机器的配置,内存多少,cpu多少 , IO什么情况等等。
?
深蓝_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下载
官方微信