对国人开发的这款PHP框架早有耳闻,今日就来趟趟水,也为了今后更好的学习。


准备

ThinkPHP下载

由于我这里的PHP的版本较低,为PHP5.2.8版本的,所以对于高版本的Tp是不支持的,为了减少工作量,咱干脆下载一个tp版本较低点的吧。

ThinkPHP3.1.3版本完整版

Eclipse-for-php

前段时间,刚刚接触PHP的时候由于不了解,所以用的是DreamWeaver,不得不说里面有很多对于前端开发而言比较实用的技巧,但是代码提示做的真的不给力,所以调试代码的时候,内心几乎是崩溃的。

后来觉得SublimeText还不错,代码高亮做的很不赖,唯一的缺点就是<?php这样一个骨灰级的标签的高亮是白色的,虽然可以进行自定义的拓展,但还是显得很单薄。对于调试尤其如此。

最后在选择合适的IDE环境的时候,也是陷入了纠结,到底是用更专业的PhpStorm呢?还是用更顺手的Eclipse呢?最后由于PhpStorm的收费问题,果断选择了Eclipse。 :(

下面附上该Eclipse的下载地址。

Eclipse-for-php-neon下载地址

如何使用?

放置位置

下载完的tp解压之后我们会发现里面除了ThinkPHP文件夹,还有其他的几个文件夹,不过我们只需要拷贝ThinkPHP到我们的项目根目录即可。

检验引用效果

我们只需要写一个php文件,对其进行访问即可。如下:

index.php

<?php
// 之所以写这个路径,就是因为index.php和ThinkPHP文件夹位于同一目录下
include ("./ThinkPHP/ThinkPHP.php");

?>

效果

访问网址http://localhost/tplearn/index.php

出现上图的话,说明你的环境已经搭建好了,这时我们回到刚才的index.php所在的目录,就会发现其多了几个文件夹,这就是tp为我们自动生成的方便我们接下来开发的文件夹。

路由

路由,说白了就是根据一个地址访问到我们的数据的一个方式。ThinkPHP中对路由的支持有四种方式。

  • 普通模式 http://localhost/tplearn/index.php?m=User&a=login
  • 一般模式 http://localhost/tplearn/index.php/User/login
  • 伪静态模式 http://localhost/tplearn/User/login
  • 兼容模式 http://localhost/tplearn/index.php?s=/User/login

具体的内容网页上有很多,基础的内容这里不再过多的阐述了。

不过我们用的最多的可能就是一般模式。

形如http://localhost/tplearn/index.php/User/login

其底层就是会通过tp自带的请求转发分配下到UserAction.class.php文件中的UserAction的login方法,并实现业务逻辑。

调试之模板的使用

类似于著名的php模板引擎Smarty,ThinkPHP也有属于自己的一套模板,好处神马的不在阐述,也没什么难于理解的地方。

今天要说的就是在不同的模式下使用模板引擎产生的效果。

前提

这次根据前面讲解的路由使用来让tp给客户端发送一张网页,默认咱们没有创建该模板文件。

生产模式

在tp的配置文件中我们看到的APP_DEBUG字段就是来控制调试模式的,但是我们最好是在自己的项目的配置文件中进行指定,否则会导致框架出错。

下面看一个默认的状态的效果。

<?php
// 定义项目的应用目录,许多文件目录将会创建在这里
define("APP_PATH","../");

// 设置开发模式,将默认的生产模式改成调试模式.默认为生产状态,也就是不详细提供错误信息的模式
//define("APP_DEBUG",true);

include ("../../ThinkPHP/ThinkPHP.php");

?>

生产状态下为了安全和更好的用户体验,仅仅给一个友好的错误提示即可。

开发模式

代码中会有错误,这很正常,但是如果错误信息能更好的显示出来,对于我们开发来说,效率真的是再好不过了。

<?php
// 定义项目的应用目录,许多文件目录将会创建在这里
define("APP_PATH","../");

// 设置开发模式,将默认的生产模式改成调试模式
define("APP_DEBUG",true);

include ("../../ThinkPHP/ThinkPHP.php");

?>

开发模式下错误信息更加详细的被展示了出来,我们可以有的放矢的来修正代码中的bug。

添加完相应的路径以及模板文件后

总结

回顾一下,这次的实验中最为重要的地方就在于:

  • 一般模式下的路由使用:http://website/index.php/Action/Method
  • 开发模式和生产模式的各自特点: APP_DEBUG的define方式和配置文件URL_MODEL的0,1,2,3值的两方式。
  • 模板文件的简单使用

ThinkPHP 初探的更多相关文章

  1. ThinkPHP之MVC与URL访问

    一.初探 我们在apache的www目录下创建一个文件夹,其命名为我们的应用名.然后通过入口文件生成我们的应用. 当我们用ThinkPHP创建好一个应用后,其目录结果如下所示 那么我们如何来访问我们应 ...

  2. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  3. 在 SAE 上部署 ThinkPHP 5.0 RC4

    缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...

  4. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  5. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  6. thinkphp数据的查询和截取

    public function NewsList(){ $this->assign('title','news'); $p = I('page',1); $listRows = 6; $News ...

  7. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

  8. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  9. 初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

随机推荐

  1. 存储过程学习笔记(SQL数据库

    一.   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程 ...

  2. svg 五花 元辅音 助读器

    如图,使用svg 创建5个圆,中间 辅音字母,外圈 元音字母 以及 示例单词. 可以使用  提交 按钮 进行更新

  3. JavaScript 散列表(HashTable)

    TypeScript方式实现源码 // 特性: // 散列算法的作用是尽可能快地在数据结构中找到一个值. 在之前的章节中, 你已经知道如果 // 要在数据结构中获得一个值(使用get方法) ,需要遍历 ...

  4. [LeetCode] Merge Two Binary Trees 合并二叉树

    Given two binary trees and imagine that when you put one of them to cover the other, some nodes of t ...

  5. [HAOI2006]旅行

    题目描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,…,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也 ...

  6. bzoj 1058: [ZJOI2007]报表统计

    Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个 ...

  7. [BZOJ]2458: [BeiJing2011]最小三角形

    题目大意:给出平面上n个点,求最小的由这些点组成的三角形的周长.(N<=200,000) 思路:点按x坐标排序后分治,每次取出与排在中间的点的横坐标相差不超当前答案一半的点,按y坐标排序后再暴力 ...

  8. [BZOJ]2017省队十连测推广赛1

    听学长说有比赛就随便打一打. A.普通计算姬 题目大意:给出一棵带权树,支持一下两种操作:1.修改一个点的权值:2.给出l,r,询问以点l为根的子树和.点l+1为根的子树和.点l+2为根的子树和--点 ...

  9. SQL Server 连接 MySQL

    1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具- ...

  10. SQL Server 2008作业失败无法确定所有者是否有服务器访问权限

    调用作业---错误提示内容 该作业失败. 无法确定所有者 WIN-3TH1KNIT12D\Administrator (拥有作业 Database_Backup.step1)是否有服务器访问权限 (原 ...