ThinkPHP学习笔记一

不敢说原创,呵呵~~但是关于学习TP的一些笔记,希望对大家有用。。

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级 PHP开发框架,遵循Apache2开源协议发布,是为了敏捷 WEB应用开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面 不断优化和改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。
ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的Action思想和 JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,在项目配置、类库导入、模版引擎、 查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的表 现。

使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单和快速的特性中 受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、 更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践!

总之个觉得TP(Thinkphp的简称,以后不再重复)框架是一个比较优秀的框架,能够满足大家开发的基本需求
作为一个笔记,我就没有必要写TP的系统特性MVC分层的一些废话了,至于他的特点和介绍大家可以去官方慢慢看,更多的要去自己去体会。。。

现在开始:
1、我们先来熟悉一些基本的目录结构。
一、系统目录(ThinkPHP框架目录)
ThinkPHP.php 框架的公共入口文件
Common包含框架的一些公共文件、系统定义、系统函数和惯例配置等
Lang系统语言文件
Lib系统基类库目录
Tpl系统模板目录
Mode框架模式扩展目录
Vendor第三方类库目录
二、应用目录(项目目录)
index.php 项目入口文件(可以使用其他名称或者放置于其他位置)
Common项目公共文件目录,一般放置项目的公共函数
Conf项目配置目录,所有的配置文件都放在这里。
Lang 项目语言包目录(可选)
Lib项目类库目录,通常包括Action和Model子目录
Tpl项目模板目录,支持模板主题
Runtime项目运行时目录,包括Cache(模板缓存)、Temp(数据缓存)、Data(数据目录)和Logs(日志文件)子目录
上面的只是默认方式,项目下面的目录名称和结构是可以重新定义的。其实项目目录并不需要开发人员手动创建,只需要定义好项目的入口文件之后,系统会在第一 次执行的时候自动生成项目必须的所有目录结构(前提是项目目录具有可写权限,这点在Linux环境下面需要注意)。
可以看出新版的目录结构更加便于部署和配置,因为只有Runtime目录才是需要具备可写权限的,在Linux环境下面可以更加快速的部署和配置目录权 限。

2、TP的命名规范
作为一个框架必然有其自身的一定规范,ThinkPHP也是一样的。下面是使用ThinkPHP应该尽量遵循的命名规范(官方提供):
  类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母 大写,例如DbMysql.class.php。
  函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求)。
  确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写)。
  类名和文件名一致(包括上面说的大小写一致),例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php,
  函数的命名使用小写字母和下划线的方式,例如 get_client_ip
  Action控制器类以Action为后缀,例如 UserAction、InfoAction
  模型类以Model为后缀,例如UserModel、InfoModel
  方法的命名使用驼峰法,并且首字母小写,例如 getUserName
  属性的命名使用驼峰法,并且首字母小写,例如 tableName
  以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload
  常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY
  配置参数以大写字母和下划线命名,例如HTML_CACHE_ON
  语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_。
  数据表和字段采用小写加下划线方式命名,例如 think_user 和 user_name
特例:
在ThinkPHP里面,有一个函数命名的特例,就是单字母大写函数,这类函数通常是某些操作的快捷定义,或者有特殊的作用。例如,ADSL方法等等,他 们有着特殊的含义,后面会有所了解。
另外一点,ThinkPHP默认使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多 方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理)。

3、从“头”开始——index.php
ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目只有一个统一(但不一定是唯一)的入口。并且所有的项目的入口文件是类 似的,入口文件主要完成的作用是:
  路径定义 项目名称定义(可选)
  额外参数定义(可选)
  载入框架入口文件(必须)
  实例化一个App应用(必须)
官方给出了一个标准的入口文件写法:
  1. <?php
  2. // 定义ThinkPHP框架路径(相对于入口文件)
  3. define('THINK_PATH','./ThinkPHP/');
  4. //定义项目名称和路径
  5. define('APP_NAME','MY_APP');
  6. define('APP_PATH','./');
  7. // 加载框架入口文件
  8. require THINK_PATH.'ThinkPHP.php';
  9. //实例化一个网站应用实例
  10. // $app = new app();
  11. // $app->run();
  12. App::run();  //与上面等价
  13. ?>
复制代码

然后大家访问就可以看到了:
^_^ Hello,欢迎使用ThinkPHP的东东,此时就说明你的配置成功了
根目录下由原来的TP框架目录+index.php,变成了Common+Conf+Lang+Lib+Runtime+Tpl,这是都是TP自动生成的 目录
前面已经说过了他们的做用了,这里就不再累述。

4、如何访问?
ThinkPHP框架基于模块和操作的方式进行访问,由于ThinkPHP框架的应用采用单一入口文件来执行,因此网站的所有的模块和操作都通过URL的 参数来访问和执行。这样一来,传统方式的文件入口访问会变成由URL的参数来统一解析和调度。
ThinkPHP强大的URL解析、调度以及路由功能为这个功能实现提供了有力的保证,并且可以在绝大多数的服务器环境里面部署成功。
ThinkPHP支持的URL模式包括普通模式、PATHINFO模式、REWRITE模式和兼容模式,并且都提供路由支持。默认为PATHINFO 模式,提供最好的用户体验和搜索引擎友好支持。
以上来自官方术语。。。。
ThinkPHP的控制器就是模块类,通常位于项目的Lib\Action目录下面。类名就是模块名加上Action后缀,例如IndexAction类 就表示了Index模块
每一个模块里的方法是一个动作。
在TP中,如果我们要访问控制器(模块)中的方法需要的URL格式如下:
http://localhost/appName/index.php?m=moduleName&a=actionName
所以,当我们进入首页index.php,在其后面换成:index.php?m=index&a=index 发现页面并没有改变的。
但是她的地址却变成了/index.php/index/index/,这是因为,TP默认为PATHINFO 模式。

5、开始我们的第一个test实例
我们打开Lib/Action的IndexAction.class.php
在index方法的后面添加以下代码:
  1. public function hfphp(){
  2. echo "欢迎来到中科英才——合肥PHP培训中心";
  3. }
复制代码

那么我们就访问index.php?m=index&a=hfphp,就可以了

以后有时间会继续写,当然也希望得到大家的支持,

来源:http://bbs.hfphp.org/thread-152-1-1.html

同时,也欢迎大家访问安徽PHP社区:http://bbs.hfphp.org/ 

原文地址:https://www.cnblogs.com/jincon/p/1737365.html