ThinkPHP快速入门
ThinkPHP快速入门
1、ThinkPHP自动生成
当我们部署完ThinkPHP框架后,其会自动生成Application文件夹,如下图所示:
2、自动生成细节分析
问题1:Application从何而来?
答:Application文件夹是由入口文件中的APP_PATH常量决定的,其可以自动按照设定参数生成指定文件夹。
问题2:为什么常量的定义要载入文件载入之前呢?
答:因为在ThinkPHP.php入口文件中,其要对APP_PATH进行判断,如果没有这个问价夹就创建
问题3:ThinkPHP系统是如何自动生成Application这个项目目录的呢?
答:由ThinkPHP.php入口文件中的start函数进行初始化生成的
3、Zend Studio代码追踪
在实际项目开发中,如果我们开发一个企业级框架,由于文件过多,很多找到我们需要跟踪的代码,这个时候可以在Zend软件中,使用Ctrl+鼠标坐标点击要追踪的代码或文件,系统会自动进行定位。
4、Application项目目录详解
Common:核心函数库核心配置,优先级要高于ThinkPHP内置核心函数库
Home:前台Home模块,后面还可以实现Admin后台模块
Runtime:运行时目录,缓存文件、日志文件等等…
5、Home前台模块分析
Common:核心函数库,优先要高于Application以及ThinkPHP内置函数库
模块的优先级 > Application项目的优先级 > ThinkPHP内置优先级
Conf:核心配置文件,数据库设置…
Controller:Home模块的控制器
Model:Home模块的模型
View:Home模块的View视图
index.html:基于安全考虑而引入的index文件,访问外部访问项目目录结构
问题:为什么在新版ThinkPHP框架中的每一个文件夹下都有一个空的index.html文件呢?
答:当我们访问某个文件夹时,如果其没有默认入口文件,则使用Apache默认配置直接输出整个目录结构。所以为了解决这个问题,就引入了index.html
6、ThinkPHP配置文件分析
问题:为什么当我们访问http://www.think.com 这个虚拟域名,系统会自动弹出以下界面,这个界面又存在哪里呢?
答:这个跳转主要是由ThinkPHP核心配置文件决定的,如下图所示:
打开后,找到如下代码:
由此可知:当我们访问虚拟域名时,那系统会自动转向到系统的Home模块下的Index控制器下的index操作方法。
运行链接如下图所示:
特别说明:在我们实际项目开发中,经常会用到配置信息,但是我们不需要对其死记硬背,遇到配置信息时,直接到ThinkPHP/Conf/convention去复制编辑即可。
7、ThinkPHP入门案例-读取数据库中的信息并显示
① 配置虚拟主机
② 配置hosts文件并重启Apache服务器
③ 复制ThinkPHP核心目录到项目文件夹中(如think)
④ 创建index.php入口文件并编辑代码如下图所示:
⑤ 通过浏览器,访问虚拟域名,如下图所示:
由于系统受到配置文件convention.php文件的影响,默认会访问Home/Index控制器/index操作方法。
⑥ 更改index方法
1)链接数据库
由于ThinkPHP中的程序都是预定义好的,我们链接数据库只需要定义一个配置文件即可,在Home模块下的Conf文件夹下的config.php文件中,添加以下参数(参数可以在convention.php中复制)
2)实例化模型(操作数据库)
运行效果:
ThinkPHP快速入门的更多相关文章
- ThinkPHP 快速入门
1. 框架简介 框架是程序结构代码的集合,而不是业务逻辑代码.集合中包含了很多类.函数和功能类包.这个集合是按照一定标准组成的功能体系.体系有很多设计模式,比如MVC等. 2. ThinkPHP框架学 ...
- thinkphp快速入门(学习php框架及代码审计)
之前想学习php代码审计,但是没有坚持下去,记得当时看到了很多CMS框架采用MVC架构,就嘎然而止了. 为了深入学习下框架,一边看着thinkphp官方文档,一边写个简单的登陆注册页面以加深理解. 官 ...
- php随笔4-thinkphp 学习-ThinkPHP3.1快速入门(2)数据CURD
ThinkPHP3.1快速入门(2)数据CURD 浏览:194739 发布日期:2012/09/05 分类:文档教程 关键字: 快速入门 CURD 上一篇中,我们了解了ThinkPHP的基础部分, ...
- php随笔3-thinkphp 学习-ThinkPHP3.1快速入门(1)基础
ThinkPHP3.1快速入门(1)基础 简介 ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发 框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在 ...
- ThinkPHP3.1快速入门教程
ThinkPHP3.1快速入门教程 http://www.thinkphp.cn/info/155.html ------------------------------------------- ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- [Angular2 Router] Style the Active Angular 2 Navigation Element with routerLinkActive
You can easily show the user which route they are on using Angular 2’s routerLinkActive. Whenever a ...
- LINUX CACHE IO THREAD
http://www.penglixun.com/tech/system/linux_cache_discovery.html http://my.oschina.net/HardySimpson/b ...
- win7+iss7的配置,以及如何在本地IIS服务器挂载一个网站
虽然学过在XP安装IIs服务器和在IIS服务器挂载网站的东西,但是win7和XP的方式还是有许多不同的.废话不说直接进入正题 在本地安装IIS服务器 在IIS服务器中添加你的项目 将你项目的首页设置为 ...
- IIS 发布网站遇到的问题
1.解决win7 64位[ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 http://wwwu8.wap.blog.163.com/w2/blogDetail.do?hostID ...
- linux 下 奇怪的 动态库 依赖问题
转:http://fanwei51880.blog.163.com/blog/static/3240674020111145285375/ 总结如下:1)当你在编译生成静态库的时候, 只需要相应的依赖 ...
- 关于Java文件删除的操作
在调用Java删除文件时,我们常常会调用file.delete();,但其实这个delete只能删除单个文件还有空文件夹,但是如果文件夹不是空,这个方法就无法删除文件了. 所以要删除有内容的文件夹,就 ...
- 3.2html学习笔记之图片
<img src="" width="50%" alt="加载时候或无法显示时候显示的文字" height="让浏览器预先给 ...
- Xcode 8 用处不大的新特性:CLANG_WARN_INFINITE_RECURSION
来源:酷酷的哀殿 链接:http://www.jianshu.com/p/067f4674f75f Xcode 8 的 clang 新的警告控制,当所有路径都通过一个函数都调用自身时,会产生一个警告 ...
- 集成支付宝钱包支付ios SDK的方法和经验
没想到,支付宝的SDK是我目前用过的所有第三方SDK中最难用的一个了. 下载 首先,你要想找到这个SDK,都得费点功夫.现在的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 “请点此下载集成开 ...
- WPF 之 窗口间传参数
有如下几种方式: 1) 声明个全局变量,就是App.xaml里面声明:在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName&qu ...