ThinkPHP

先把百度百科上对这个框架的介绍粘贴过来:

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。[1]

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQLSqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。

作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。

OK说了那么多,可以简单理解成,Think PHP 是一个写好的PHP框架,里面封装了很多东西,并且实现了很多特性,同时也是遵循MVC的设计理念。开发的时候,直接用这一套,我们直接在上面添加自己的功能性东西业务逻辑以及视图,然后根据具体情况改改配置文件就可以了。增大开发效率。

使用Think PHP

Think PHP的细节很多,也有专门的使用文档:http://www.thinkphp.cn 这上面有文档和最新版本TP。

因为有官方开发文档,所以也没必要再去说每个细节。直接去看上面网址里的开发文档即可,这里只是说些基本的东西。

1.使用ThinkPHP (阿帕奇)

去上面官网上下载最新版本TP。(核心版本或者完整版本,目前是两个压缩包。)

我刚刚看到的官网最新版本是thinkphp_5.0.7_core,thinkphp_5.0.5_full。

不需要安装,解压后就可以直接使用。比如咱们直接在www目录下创建一个文件夹。D1,然后把完整版本解压放到里面:

然后说下默认的目录结构内容:

├─application     应用目录

├─extend          扩展类库目录(可定义)

├─public          网站对外访问目录

├─runtime         运行时目录(可定义)

├─vendor          第三方类库目录(Composer)

├─thinkphp        框架核心目录

├─build.php       自动生成定义文件(参考)

├─composer.json   Composer定义文件

├─LICENSE.txt     授权说明文件

├─README.md       README 文件

├─think           命令行工具入口

├─thinkphp 框架系统目录

│  ├─lang               语言包目录

│  ├─library            框架核心类库目录

│  │  ├─think           think 类库包目录

│  │  └─traits          系统 traits 目录

│  ├─tpl                系统模板目录

│  ││  ├─.htaccess          用于 apache 的重写

│  ├─.travis.yml        CI 定义文件

│  ├─base.php           框架基础文件

│  ├─composer.json      composer 定义文件

│  ├─console.php        控制台入口文件

│  ├─convention.php     惯例配置文件

│  ├─helper.php         助手函数文件(可选)

│  ├─LICENSE.txt        授权说明文件

│  ├─phpunit.xml        单元测试配置文件

│  ├─README.md          README 文件

│  └─start.php          框架引导文件

入口文件在这里

从右侧可以看出来,定义应用的路径是application。

..\application\index\controller\index.php 是控制器入口文件:里面是:



比如现在访问链接:

http://127.0.0.1/D1/public/index.php

也可以http://127.0.0.1/D1/public/

再看下start.php

然后改下控制器入口文件:application\index\controller\index.php

这里面的index() 就跟C++ 的main一样,可以理解成是或者模块的入口函数。

最后记得资源可以放在public目录下,其他不需要提供访问权限的东西不能放在这里。

2.Think PHP 的调试

Think PHP 的错误显示细节很详细的,开关在这个位置,记得发布的时候一定要关闭调试开关:

测试下:

3.控制器

可以理解成是C++的main函数。

application/index/controller/Index.php

<?php

namespace app\index\controller;

class Index

{

public function index()

{

return 'Hello,World!';

}

}

可以为操作方法定义参数,例如:

<?php

namespace app\index\controller;

class Index

{

public function index($name = 'World')

{

return 'Hello,' . $name . '!';

}

}

4.视图

Hello.html

<html>

<head>

<title>hello {$name}</title>

</head>

<body>

hello, {$name}!

</body>

</html>

然后控制器里:

<?php

namespace app\index\controller;

use think\Controller;

class Index extends Controller

{

public function index($name = 'World')

{

return 'Hello,' . $name . '!';

}

public function hello($name = 'thinkphp')

{

$this->assign('name', $name);

return $this->fetch();

}

}

最后访问:

http://127.0.0.1/D1/public/index.php/index/index/hello

输出:

hello, thinkphp!

5.访问数据库

然后可以这样查询数据:

<?php

namespace app\index\controller;

use think\Controller;use think\Db;

class Index extends Controller

{

public function index()

{

$data = Db::name('data')->find();//data是列名

}

}

剩下的Think PHP还有很多,可以在网上找开发文档自己慢慢了解。这里只是简单入个门,让大家知道有这个东西,这个东西比较方便,平时开发可以尝试使用。

13.PHP_ThinkPHP的更多相关文章

  1. TechEmpower 13轮测试中的ASP.NET Core性能测试

    应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚.在选择框架时, ...

  2. .NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

    Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器 ...

  3. 转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38

    转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38http://space.itpub. ...

  4. IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页

    因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...

  5. CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection)

    CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection) 2016-08-13 由于CSh ...

  6. ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...

  7. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  8. ASP.NET Core 中文文档 第三章 原理(13)管理应用程序状态

    原文:Managing Application State 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:高嵩 在 ASP.NET Core 中,有多种途径可以对应用程序的状态进行 ...

  9. C#开发微信门户及应用(13)-使用地理位置扩展相关应用

    本文继续上一篇<C#开发微信门户及应用(12)-使用语音处理>,继续介绍微信的相关应用.我们知道,地理位置信息可以用来做很多相关的应用,除了我们可以知道用户所在的位置,还可以关联出一些地理 ...

随机推荐

  1. java 给时间增加时间得到一个新的时间(日期)

    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd") LocalDate expirationDate String exp ...

  2. android底部导航栏小结

    android自带的有TabHost,但好像无法满足要求, 本文只记录使用 TabLayout + Fragment  和 android 自带的 BottomNavigationView + Fra ...

  3. [Python] 波士顿房价的7种模型(线性拟合、二次多项式、Ridge、Lasso、SVM、决策树、随机森林)的训练效果对比

    目录 1. 载入数据 列解释Columns: 2. 数据分析 2.1 预处理 2.2 可视化 3. 训练模型 3.1 线性拟合 3.2 多项式回归(二次) 3.3 脊回归(Ridge Regressi ...

  4. Paperfolding HDU - 6822

    传送门:https://vjudge.net/problem/HDU-6822 题意:给你一张无限的纸有四种折叠方式,并且在n次折叠后减两刀问最后纸张数量的数学期望. 思路:我们要得到一个通项公式对于 ...

  5. 攻防世界 reverse secret-string-400

    secret-string-400 school-ctf-winter-2015 解压文件得到html和js文件 Task.html <html> <head> <tit ...

  6. [图论]最优布线问题:kruskal

    最优布线问题 目录 最优布线问题 Description Input Output Sample Input Sample Output Hint 解析 代码 Description 学校有n台计算机 ...

  7. 面试关于Spring循环依赖问题,我建议你这么答!

    写在前面 在关于Spring的面试中,我们经常会被问到一个问题:Spring是如何解决循环依赖的问题的. 这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不 ...

  8. 【pytest系列】- assert断言的使用

    unittest断言方式是用过框架自己实现的,即self.assertEqual()等,当我们使用pytest框架后,这种断言方式是不可用的,因为测试类不会再继承unittest.TestCase类, ...

  9. Unity2D项目-平台、解谜、战斗! 1.3移动组件

    各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 在这一篇中,我们将会自顶向下地讨论本2D游戏中主角不可或缺的一个功能--移动控制. 首先我们简单分析一下2D游戏中主角与移动相 ...

  10. ES6转ES5(Babel转码器)

    ES6转ES5(Babel转码器) 前提:必须在VScode中已经安装了Node.js 官网:https://nodejs.org/en/ 一.安装命令行转码工具 npm install --glob ...