对国人开发的这款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. 一、spring的成长之路——代理设计模式

    java常用的设计模式详解: 1.代理模式(JDK的动态代理) [IDept.java] ​ 这是一个简单的就接口,进行数据的更新 package com.itcloud.pattern.proxy; ...

  2. How to preview html file in our browser at sublime text?

    sublime preview html.md open In Browser what should we do if we want to preview html file in our bro ...

  3. 在Unity3D中利用 RenderTexture 实现游戏内截图

    using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; publ ...

  4. hihocoder 1075 : 开锁魔法III

    描述 一日,崔克茜来到小马镇表演魔法. 其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅有一把钥匙能打开它.初始时,崔克茜将会随机地选择 k 个盒子用魔法将它 ...

  5. UDA机器学习基础—误差原因

    1.模型误差产生的原因 (1)模型无法表示基本数据的复杂度,而造成偏差. (2)因模型对训练它所用到的数据过度敏感造成的方差. 2.由偏差造成的误差--准确率和欠拟合 有足够数据表示模型,但是由于模型 ...

  6. python中如何将生成等差数列和等比数列

    在python库numpy 中提供了函数linspace和logspace函数用于生产等差数列和等比数列.     1.linspace函数生成等差数列 def linspace(start, sto ...

  7. IP地址、子网掩码、网关、DNS服务器

    1. IP地址 IP是英文Internet Protocol的缩写,意思是"网络之间互连的协议",也就是为计算机网络相互连接进行通信而设计的协议.在因特网中,它是能使连接到网上的所 ...

  8. 实现一个ordeeddict

    class MyOrderdict(): def __init__(self, mydict): self._cur = 0 self._mykeys = [] self._myvalues = [] ...

  9. 解决$.ajax()在IE10以下失效的问题

    一.问题重现 本地的脚本请求测试环境的接口 $.ajax({ url: ***, type: GET, data: data, success: function (data) { **** } }) ...

  10. ionic安装教程

    首先是安装node.js,通过nodejs官网下载,网址https://nodejs.org/en/.如果下载许要教程推荐这个https://www.cnblogs.com/zhouyu2017/p/ ...