百搜论坛欢迎您的加入!
adimg adimg
 
昨日:篇  今日:篇   总帖:篇   会员:
今日:0    总帖:115
admin
1417
THINKPHP5是一个很好的PHP框架,简称TP5,如果你会PHP,可以很容易的掌握这个框架,针对于想要学习tp5的同学,我们简单对TP5的安装和配置,及文件结构做一下介绍。安装配置官网下载TP5完整版(初学者学习用的)解压到本地的开发环境phpstudy中,默认的入口文件是public,访问public会看到TP5成功页面。目录介绍一般开发中,代码都是写在application这个文件夹中开发一个项目的时候,通常分为前台和后台,前台一般放在index模块中,后台一般放在admin模块中。也可以自己新建一个模块模块内部,都遵循着MVC架构controller、model、view都可以自己在模块中创建下面对application文件夹中的文件做一些介绍;image.pngcommand.php    命令行启动TP5框架需要读取的文件common.php    常用的函数,都写在这个文件中config.php    配置文件,开启什么,关闭什么,都在这设置database.php    连接数据库时候读取的文件,比如用户名route.php    路由文件,美化url的tags.php    扩展框架的时候用到下载的第三方库都放在这里入口文件static    这里放的是css、html之类的静态文件favicon.ico    这个是网站图标,在标签栏显示的index.php    网站入口文件,所有的请求都会经过这里robots.txt    禁止搜索引擎爬取页面的设置router.php    在没有部署网站环境的情况下,配置这个文件可以让网站运行开发规范(命名规范)目录    只是小写字母和下划线构成类的文件名以命名空间定义,并且命名空间和类库文件所在路径一致。类的文件采用驼峰,并且首字母大写,其余文件为小写加下划线。类名和类文件名保持一致,采用驼峰命名,首字母大写。函数使用驼峰命名,首字母小写。属性名采用驼峰,首字母小写以双下划线开头的函数或方法为魔术方法。常量以大写字母和下划线命名表和字段必须以小写字母和下划线命名方式,不能以下划线开头。模块设计自己创建的common模块可以自己创建common模块,然后里面写一些其他模块会常用的控制器,或者其他模块依赖的控制器,让他们继承。image.png惯例配置与应用配置与扩展配置所谓应用位置,就是对app文件夹中文件都起作用的配置。定义配置文件路径创建了配置文件后,必须要在入口文件出定义配置文件的路径,并且要将配置文件命名为config.php才可以。通常是不允许修改TP5框架的惯例配置的,这样不安全也不规范,只要定义了应用配置,那么应用配置文件中的配置的值会代替惯例配置中相同的配置,若是没有相同的值,那么就会新添加应用配置中的值。(惯例配置不会遭到修改)image.png如果项目比较大,配置信息也就多,放在一个配置文件中不合适,所以就有了扩展配置。优先级是扩展配置会覆盖conf/config.php配置,会覆盖TP5惯例配置。另外,扩展配置文件夹必须叫做extra文件夹,同时TP5为了人性化,允许与conf/config.php同级创建database.php,但是,这个database.php是属于extra扩展配置的,拥有扩展配置的优先级覆盖。场景切换配置在惯例配置中,有'app_statues'参数,默认为空,但是可以在应用配置conf/config.php中设置该参数的值为场景名称,然后再创建该场景名称的配置文件,在里面写入想配置的参数就可以了。只要想切换场景,就修改conf/config.php这个应用配置文件中'app_status'的值即可。惯例配置参数展示在conf/config.php中,只要调整'app_status'的值为home,那么就会调用conf/home.php中的配置。应用配置实例不过,由于TP5的BUG,必须要在conf/home.php中将完整的database.php中的代码复制过来,否则,修改完一处参数后,整个应用配置只有修改后的这个参数,原来的database.php中的其他参数就默认没有了。以上内容的配置,都是对整个应用起作用的,针对模块的单独的配置,下面会有。模块配置与动态配置模块配置只要像上方那样做修改就可以了。而动态配置,指的就是在控制器中进行配置,或者在控制器的方法中进行配置。说的再直白点,就是在类中用构造方法配合config()函数进行配置,这种配置,对整个类都有作用。若想对指定方法配置,那么就在那个方法中用config()函数进行配置就可以了。image.png我上面只是在方法中没有输出config()配置罢了,不然只要访问方法,就可以看到。环境配置环境配置结合场景配置,先在根目录创建.env文件,然后在应用配置的config文件中利用 think\Env 这个类中的 Env::get()函数获取.env文件中的值,来对场景进行选择。这样就不用修改场景,只需要修改.env中的配置的值就可以了。绑定入口文件绑定入口文件之后,就可以直接加控制器和方法来访问了,如果绑定了控制器,那么只要输入方法就可以了。绑定入口文件通常用于接口使用,比如让第三方接入的时候,不希望第三方访问我们的index模块或者admin模块,那么就用这个绑定入口文件来解决。另外,一旦进行了入口文件的绑定,比如我上面绑定了index,那么我也无法访问admin模块下的页面了。只能访问index模块中的页面api的应用路由若要使用路由,那么首先要开启路由,在convention.php文件中默认开启路由。不过,因为要用到我们的app中,所以需要将开启语句复制到conf/config.php中。开启路由一旦设置好路由的规则后并且开启了url_route_must=true,那么访问原来的index/Index/info/id/5就会报错,只能访问news/5。所以,要想原来访问的地址也能访问,就将url_route_must=falseinfo方法需要传入形参id这里输出的是news/10,因为这里之前定义了index/index/info的路由为news/:id,如果没有定义过,那么输出就是原来的路径,而不是路由的路径路由助手函数的输出请求对象的获取重点是Request类的使用,以及里面的方法实际上,可以仔细参考一下这个框架的编写风格,感觉能学到不少编程思想。由于上面返回的基本上都是关键数组,所以,如果想获取某个返回的数组中参数的值,可以直接在方法中加上参数名。其他获取的一些内容上面的param方法,会返回get,post,pathinfo这几个的值image.png上图第三个参数,是用来过滤获取到的值的,之所以是用intval,是对获取到的值进行整数强制转换。推荐自己写代码不用助手函数input,用request类那样的写法,这样代码的可读性更高,但是input还是要了解,因为每个人的代码不同。控制器中不建议使用die函数,可以用return来结束。返回对象上面用到了Config类,但是却忘记 use think/Config;了返回对象一般都是动态配置,因为不能保证每个控制器的返回对象都相同。视图和模板控制器渲染视图控制器中,可以使用view()函数来将与controller同一层的view模块中的与控制器同名的index文件夹中的与index()方法同名的intex.html渲染出来。这个是一个对应关系。Index控制器对应的是view/index文件夹只要做到view文件夹路径后的文件名对应模块名就可以了,控制器中的view()方法可以指定参数。view()对应的路径就是view文件夹view('./html/index.html')函数里面传入这样的参数,代表是从入口文件进去了,而不是像view('index')这样代表view/index.htmlview()函数的参数不同,路径也不同return view('index',['email'=>'123456@qq.com','name'=>'xxx'])类似这样的用法,是view()函数向指定要渲染的html页面传输变量emali和变量name的值。只需要在显示的位置{$email}或者{$name}就可以了。渲染变量要渲染的页面,只要输入大写的STATAC,那么就会被下面这个view函数的第三个参数的值所替换,通俗点看就是渲染了常量。第三个参数,渲染常量STATAC不过,上面的方法还是不推荐使用,代码可读性不高。实际开发中,最好是继承think\Controller,然后,使用$this->fetch()来渲染。用法和view()一样。推荐使用$this->fethc()也可以直接使用$this->assign('a','a的值')来给要渲染的页面上的a变量赋值。$this->assign()的用法当view文件夹中没有任何要渲染的模板的时候,就用到了下面这个函数同时也比较有用的一个方法是$this->display('只显示我这个字符串内容'),这是只传入一个参数的时候。传入两个参数的用法在渲染页面的时候,TP5框架让html页面中用的是花括号来表示变量的,但是,这个也可以在tp5中进行修改,让其他的符号或者其他的值来代替花括号的作用。几种渲染模板时候赋值的方式赋值方法还挺多的在配置文件中,可以设置下面这个参数的值,来全局替换某个关键词为某个值设置全局值替换常用的有一些系统默认设置的字符串替换:这几个很常用上面这些修改指定字符串值的方法,最神奇的使用地方就是,假如我们修改了某个文件的位置,那么只要设置指定字符串的值,就可以了,否则还得一个代码一个代码的进行修改。先看看下面能输出哪些值,然后理解在tp5中,模板是如何获取这些值的输出查看$_SERVER有哪些值$_SERVER的值模板获取$_SERVER中指定的值获取其他的值获取更多的值上面这个错了,是获取app的路径,不是当前页面的路径在模板中进行变量计算的时候,可以用#进行占位,之所以要占位,是因为{$email|md5}是把email这个参数传入md5这个函数中,而有的函数,有好几个参数传入,也有传入的顺序,所以就需要用到#来进行占位。模板中进行变量的计算还可以同时叠加好几个函数变量遇到js下面这样的注释,更加安全,因为html代码中看不到。如果用html的注释,那么就会在前端的网页源码中找到更安全的注释模板循环标签循环标签的使用在模板中,用{volist name="list" id="data"} {/volist}这一对标签来将控制器中的数组list进行循环,上图中会循环输出二维数组list中全部的name值,还附带<p>标签。list数组offset参数代表从数组的几个元素开始遍历,length参数代表遍历的长度,mod代表对当前循环次数取余。其他参数foreach迭代for循环for在模板中的其他参数比较标签比较标签,eq和equal相等的不相等的比较标签大于、小于标签大于等于、小于等于image.png条件判断标签Think.get.level这里的level是get传的参数image.png还有notbetween这样的参数几个常用标签上面的 if 标签内部还可以用AND和OR这样的逻辑语句模板的布局包含和继承当在block中嵌套使用block的时候,就可以向下方这样使用{__block__}是使用被继承薄板中的值这部分知识,主要就是include,extend,block的灵活运用。下面可以尝试做ThinkPHP5开发的项目来进行实战了。实战中再多记录一些笔记。本文地址:http://www.hnzzwz.com/blog/post/49.html版权声明:本文为原创文章,版权归 ll2l 所有,欢迎分享本文,转载请保留出处!
0 0 1372天前
快速发帖 高级模式
联系站长 友链申请桂ICP备19000949号-1     桂ICP备19000949号-1
您的IP:3.144.212.145,2024-04-27 01:40:18,Processed in 0.61219 second(s).
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Powered by HadSky 7.12.9
免责声明
1、本站资源,均来自网络,版权归原作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !
如果觉得本文还不错请点个赞或者打赏点轻币哦~
拒绝伸手党,拿走请回复,尊重楼主,尊重你我他~

侵权删除请致信 E-Mail:207882320@qq.com