一、安装
ThinkPHP无需任何安装,直接拷贝到你的电脑或者服务器的WEB运行目录下面即可。
如:我使用的是XAMPP集成环境,将框架解压缩到htdocs目录下即可。
 
二、目录结构
1、初始目录结构
www  WEB部署目录(或者子目录)
├─index.php       入口文件
├─README.md       README文件
├─Application     应用目录
├─Public          资源文件目录
└─ThinkPHP        框架目录
说明:
1)ApplicationPublic目录下面都是空的。
2)Application目录默认是空的,但是第一次访问入口文件会自动生成。
3)上面的目录结构和名称是可以改变的,这取决于入口文件和配置参数。
4)除了应用入口文件和Public资源目录外,其他文件都放到非WEB目录下面,具有更好的安全性。
 
2、框架目录ThinkPHP的目录结构
├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
│  ├─Common       核心公共函数目录
│  ├─Conf         核心配置目录
│  ├─Lang         核心语言包目录
│  ├─Library      框架类库目录
│  │  ├─Think     核心Think类库包目录
│  │  ├─Behavior  行为类库目录
│  │  ├─Org       Org类库包目录
│  │  ├─Vendor    第三方类库目录
│  │  ├─ ...      更多类库目录
│  ├─Mode         框架应用模式目录
│  ├─Tpl          系统模板目录
│  ├─LICENSE.txt  框架授权协议文件
│  ├─logo.png     框架LOGO文件
│  ├─README.txt   框架README文件
│  └─ThinkPHP.php 框架入口文件
 
三、入口文件
ThinkPHP采用单一入口模式进行项目部署和访问 ,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口。
默认情况下,在初始目录结构下已经自带了一个入口文件,可以根据实际情况更改目录:
 
在浏览器输入url(http://localhost/ThinkPHP-3.2.3/index.php)访问入口文件,即可看到如下页面:
 
四、自动生成
第一次访问应用入口文件后,自动生成了一个默认的应用模块Home。原来空的Apps(相当于默认的Application)目录下面,自动生成了公共模块Common、默认的Home模块和Runtime运行时目录的目录结构:
说明:
1) 如果不是调试模式的话,会在Runtime目录下面生成common~runtime.php文件(应用编译缓存文件)。
2)目录安全文件: 为了避免某些服务器开启了目录浏览权限后可以直接在浏览器输入URL地址查看目录,系统默认开启了目录安全文件机制,在自动生成目录结构的同时,在各个目录下面生成空白的index.html文件,这是ThinkPHP自动生成的目录安全文件。
      如果环境足够安全,不希望生成目录安全文件,可以在入口文件里面关闭目录安全文件的生成:
define('BUILD_DIR_SECURE', false);
     如果想更改安全文件的名称,可以在入口文件中添加:
define('DIR_SECURE_FILENAME', 'default.html');     // 将index.html改为default.html
 
五、模块
一个应用目录下面可以有多个模块目录结构, 每个模块是相对独立的,可以方便的卸载和部署,并且支持公共模块。
Application      默认应用目录(可以设置)
├─Common         公共模块(不能直接访问)
├─Home           前台模块
├─Admin          后台模块
├─...            其他更多模块
├─Runtime        默认运行时目录(可以设置)
每个模块(如Home、Admin等)的目录结构如下:
├─Module         模块目录
│  ├─Conf        配置文件目录
│  ├─Common      公共函数目录
│  ├─Controller  控制器目录
│  ├─Model       模型目录
│  ├─Logic       逻辑目录(可选)
│  ├─Service     Service目录(可选)
│  ... 更多分层目录可选
│  └─View        视图目录
 
六、控制器
在自动生成的Application/Home/Controller目录下面找到一个 IndexController.class.php 文件,这是默认的Index控制器文件。
默认的欢迎页面其实就是访问的Home模块下面的Index控制器类的index操作方法。
控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller
控制器文件的命名方式是:类名+class.php(类文件后缀)
 
修改index方法:
再次访问应用入口文件(http://localhost/ThinkPHP-3.2.3/index.php) , 浏览器会显示:hello,world!
说明:
1)namespace Home\Controller;
开头是命名空间定义,表示当前类是Home模块下的控制器类,命名空间和实际的控制器文件所在的路径是一致的,如果改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改。
即:Home\Controller\IndexController类对应的控制器文件位于应用目录下面的Home/Controller/IndexController.class.php
 
2)use Think\Controller;
表示引入 Think\Controller 类库便于直接使用。
 
3)写法
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
等同于使用
namespace Home\Controller;
class IndexController extends \Think\Controller
 
以下原理不明,尚需在后续学习中探索:

url还可以写成http://localhost/ThinkPHP-3.2.3/home/index/index,home对应模块,第一个index对应类,第二个index对应方法:
如果在IndexController中添加第二个方法echoStr( ):
则url写为http://localhost/ThinkPHP-3.2.3/home/index/echoStr

ThinkPHP 3.2.3(一)基础的更多相关文章

  1. thinkphp系列:类的自动加载是如何设计的

    在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...

  2. node.js上除了Express还有哪些好用的web开发框架

    老司机都有体会, 开发本身没有多难, 最纠结其实是最初的技术和框架选型, 本没有绝对的好坏之分, 可一旦选择了不适合于自己业务场景的框架, 将来木已成舟后开发和维护成本都很高, 等发现不合适的时候更换 ...

  3. sanchi

    修炼之路阶段1能简单处理html+css+js前端页面,可实现管理后台前端页面 熟练安装php的web运行环境,并调整配置,会自行安装php扩展 熟练数据库操作,清楚为何使用pdo而不使用mysql等 ...

  4. ThinkPHP框架基础

    ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...

  5. 6月13 ThinkPHP框架基础

    ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...

  6. ThinkPHP -- 基础入门

      ThinkPHP文件结构说明: |——ThinkPHP.php    框架入口文件    |——Common            框架公共文件目录    |——Conf              ...

  7. ThinkPHP框架基础知识二

    一.空操作和空控制器处理 空操作:没有指定的操作方法:空控制器:没有指定控制器,例如: http://网址/index.php/Home/Main/login  正常 http://网址/index. ...

  8. ThinkPHP 5.1 基础知识

    ==========================================//模板中的默认标题{$title|default='默认标题'}========================= ...

  9. 《ThinkPHP 5.0快速入门》 基础和路由

    一.基础: 创建项目:conposer create-project topthink/think tp5 --prefer-dist 创建项目模块:php think build --module ...

  10. ThinkPHP框架的一些基础应用

    这是俺滴师傅给俺传授了的知识,特在此分享. TP框架,做PHP开发的都应该有所耳闻.下面,我们就来说说入口文件的生成: 创建新项目时,首先,在目录文件下创建一个新的文件夹.然后将Thinkphp框架文 ...

随机推荐

  1. redis.conf配置详细翻译解析

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  2. JavaScript高级程序设计 读书笔记 第二章

    <script>元素 直接在页面中嵌入JavaSript代码或包含外部JavaSript文件. 在代码中任何地方不能出现</script>,可通过转义字符'\'解决. 在XHT ...

  3. Cas 介绍及使用

    CAS(Central Authentication Service)是Yale大学发起的一个企业级的.开源的项目,旨在为web应用系统提供一种可靠的单点登录解决方法(属于 web sso). 主要特 ...

  4. 2016湖大校赛 L题 The Sequence likes Ladder

    题意:S1=a,Sn=a*(Sn-1)^k%m,且有(a,m)=1,给出i,求Si. 思路:首先我们可以写出Sn的通项a^(1+k+k^2+...k^n-1);其次注意到m的范围是10000以内,所以 ...

  5. C扩展python的module和Type

    有许多理由给CPython写扩展,比如 1.性能低 2.重复用别人的C/C++代码 3.在自己的程序中定制python 4.为了方便 等等. 写这种扩展其实都是套路,不过最好要有对CPython源码有 ...

  6. 【前端】stopPropagation, preventDefault, return false的区别

    e.stopPropagation()阻止事件冒泡或者捕获 因为事件可以在各层级的节点中传递, 不管是冒泡还是捕获, 有时我们希望事件在特定节点执行完之后不再传递, 可以使用事件对象的 stopPro ...

  7. javascript 字符串多行的写法

    多行写法! $('#' +xx ).append ( '<div id="' + file.id + '" class="">\ <div c ...

  8. Python3基础 列表之间+ 合并,不去除重复项

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  9. html select的事件 方法 属性

    事件 onactivate 当对象设置为活动元素时触发. onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发. onbeforeactivate 对象要被设置为当前元素 ...

  10. 【51nod】区间求和

    LYK在研究一个有趣的东西. 假如有一个长度为n的序列,那么这个序列的权值将是所有有序二元组i,j的 Σaj−ai 其中1<=i<j<=n. 但是这个问题似乎太简单了. 于是LYK想 ...