一、ThinkPHP的认识:

ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架。

二、下载后的目录结构:

├─ThinkPHP.php     框架入口文件

├─Common 框架公共文件

├─Conf 框架配置文件

├─Extend 框架扩展目录

├─Lang 核心语言包目录

├─Lib 核心类库目录

│  ├─Behavior 核心行为类库

│  ├─Core 核心基类库

│  ├─Driver 内置驱动

│  │  ├─Cache 内置缓存驱动

│  │  ├─Db 内置数据库驱动

│  │  ├─TagLib 内置标签驱动

│  │  └─Template 内置模板引擎驱动

│  └─Template 内置模板引擎

└─Tpl 系统模板目录

注意,框架的公共入口文件ThinkPHP.php是不能直接执行的,该文件只能在项目入口文件中调用才能正常运行。

三、入口文件:

默认入口:public/index.php(实际部署的时候public目录为你的应用对外访问目录)。

引入入口文件:

<?php

require ‘/ThinkPHP框架所在目录/ThinkPHP.php’;

?>

访问路径:http://localhost/app/

自动生成项目目录,目录结构如下:

├─index.php     项目入口文件

├─Common 项目公共文件目录

├─Conf 项目配置目录

├─Lang 项目语言目录

├─Lib 项目类库目录

│  ├─Action Action类库目录

│  ├─Behavior 行为类库目录

│  ├─Model 模型类库目录

│  └─Widget Widget类库目录

├─Runtime 项目运行时目录

│  ├─Cache 模板缓存目录

│  ├─Data 数据缓存目录

│  ├─Logs 日志文件目录

│  └─Temp 临时缓存目录

└─Tpl 项目模板目录

移动修改目录入口文件的路径:

<?php

define(‘APP_NAME’,’app’);

define(‘APP_PATH’,’./app/’);

require ’/ThinkPHP框架所在目录/ThinkPHP.php’;

?>

APP_NAME和APP_PATH分部用于定义项目名和项目目录,项目名通常就是指项目的目录名称。

四、调试模式:

ThinkPHP的运行模式包括调试模式和部署模式,默认情况下是运行在部署模式下面。部署模式下面性能优先,并且尽可能少地抛出错误信息,调试模式则以除错方便优先,关闭任何缓存,而且尽可能多的抛出错误信息,所以对性能有一定的影响。

开启调试模式(开发完后关闭)

<?php

define(‘APP_DEBUG’,TRUE);//开启调试模式

require ‘/ThinkPHP框架所在目录/ThinkPHP.php’;

?>

关闭调试模式:

define(‘APP_DEBUG’,false);

五、配置文件:

配置文件位于每个项目目录的Conf/config.php,采用定义格式为php返回数组的方式。

//项目配置文件

return array{

‘配置参数’ => ‘配置值’,

//更多配置参数

//...

};

注意:

配置值可以支持包括字符串、数字、布尔值和数组在内的数据,通常我们建议配置参数均使用大写定义。如果有需要,我们还可以为项目定义其他的配置文件。

六、使用控制器:

控制器类的命名规范:模块名+Action.class.php(模块名采用驼峰法并且首字母大写)系统的默认模块是Index,对应的控制器就是项目目录下面的Lib/Action/IndexAction.class.php,类名和文件名一致。默认操作是index的一个public方法。

初次生成项目目录结构的时候,系统已经默认生成了一个默认控制器。

示例代码:

class IndexAction extends Action {

Public function index(){

Echo ‘hello,world’;

}

}

注意:

控制器必须继承Action类,一个模块可以包括多个操作方法。如果你的操作方法是protected或者private类型的话,是无法直接通过URL访问到该操作的。

七、URL请求

入口文件是项目的单一入口,对项目的所有请求都定向到项目的入口文件,系统会从URL参数中解析当前请求的模块和操作,我们之前访问的URL地址是没有任何参数,因此系统会访问默认模块(Index)的默认操作(index),因此下面的访问和之前是等效的:

http://localhost/app/index.php/Index/index

这种URL模式就是系统默认的PATHINFO模式,不同的URL模式获取模块和操作的方法不同。

普通模式:也就是传统的GET传参方式来指定当前访问的模块和操作,例如:http://localhost/app/?m=module&a=action&var=value

M参数表示模块

A操作表示操作(模块和操作的URL参数名称是可以配置的),后面的表示其他GET参数。

PATHINFO模式:

是系统的默认URL模式,提供了最好的SEO支持,

系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。

对应上面的URL模式,PATHINFO模式下面的URL访问地址是:

http://localhost/app/index.php/module/action/var/value/

Module(第一参数)表示模块,

Action(第二参数)表示操作,

可定制方式:例如通过下面的配置:

'URL_PATHINFO_DEPR'=>'-', // 更改PATHINFO参数分隔符

还可支持

http://localhost/app/index.php/module-action-var-value/

的URL访问。

REWRITE模式:

是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。

如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

REwriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

</IfModule>

下面的URL地址访问了:

http://localhost/app/module/action/var/value/

兼容模式:

是用于不支持PATHINFO的特殊环境,URL地址是:

http://localhost/app/?s=/module/action/var/value/

兼容模式配合Web服务器重写规则的定义,可以达到和REWRITE模式一样的URL效果。

八、视图

ThinkPHP内置了一个编译型模板引擎,也支持原生的PHP模板,并且还提供了包括Smarty在内的模板引擎驱动。

和Smarty不同,ThinkPHP在渲染模板的时候如果不指定模板,则会采用系统默认的定位规则,其定义规范是TPL/模块名/操作名.html,所以,Index模块的index操作的默认模板文件位于项目目录下面的Tpl/Index/index.html。

例如:

<html>

<head>

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

</head>

<body>

Hello,{$name}!

</body>

</html>

要输出视图,必须在控制器方法中进行模板渲染输出操作,例如:

Class IndexAction extends Action {

public function index(){

$this->name = ‘thinkphp’;//进行模板变量赋值

$this->display();

}

}

display方法中我们没有指定任何模板,所以按照系统默认的规则输出Index/index,html模板文件。

接下来,我们在浏览器中输入:http://localhost/app/

浏览器中会输出: hello,thinkPHP!

九、读取数据

在开始之前,首先需在数据库thinkphp中创建一个think_data数据表(以mysql数据库为例):

建表:

CREATE TABLE IF NOT EXISTS ‘think_data’(

‘id’ int(8) unsigned NOT NULL AUTO_INCREMENT,

‘data’ varchar(255) NOT NULL,

PRIMARY KEY (‘id’) //主键

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入记录:

INSERT INTO ‘think_data’(‘id’,’data’) VALUES

(1,’thinkphp’),

(2,’php’),

(3,’framework’);

配置连接数据库相关信息:

//添加数据库配置信息

‘DB_TYPE’     => ‘mysql’,        //数据库类型

‘DB_HOST’     => ‘localhost’,   //服务器地址

‘DB_NAME’     => ‘thinkphp’,   //数据名

‘DB_USER’     => ‘root’,   //用户名

‘DB_PWD’      => ‘’,   //密码

‘DB_PORT’     => 3306,   //端口

‘DB_PREFIX’ => ‘think_’,   //数据表前缀

或采用如下配置:

‘DB_DSN’ => ‘mysql://root@localhost:3306/thinkphp’

注意:

使用DB_DSN方式定义可以简化配置参数,DSN参数格式为:

数据库类型://用户名:密码@数据库地址:数据库端口/数据库名

如果两种配置参数同时存在的话,DB_DSN配置参数优先。

修改控制器方法进行添加读取数据:

Class IndexAction extends Action {

public function index(){

$Data = M(‘Data’); //实例化Data数据模型

$this -> data = $data -> select();

$this -> display();

}

}

这里用到了M函数,是ThinkPHP内置的实例化模型的方法,

使用M方法实例化模型不需要创建对应的模型类。

可理解为:

M();是直接操作底层的Model类,而Model类具备基本的CURD操作方法。

M(‘Data’)实例化后,就可以对think_data数据表(think_是我们在项目配置文件中定义的数据表前缀)进行操作(包括CURD)了。

定义好控制器后,我们修改模板文件,添加数据输出标签如下:

<html>

<head>

<title>Select Data</title>

</head>

<body>

<volist name=”data” id=”vo”>

{$vo.id}--{$vo.data}<br/>

</volist>

</body>

</html>

Volist标签是内置模板引擎用于输出数据集的标签。

{$vo.id}和{$vo.data}的用法和Smarty类似,就是用于输出数据的字段,这里就表示输出think_data表的id和data字段的值。

访问路径:http://localhost/app/

显示输出:

Thinkphp

php

Framework

注意:

如果发生错误,请检查你是否开启了调试模式或者清空Runtime目录下面的缓存文件。

总结:

在本篇我们学习了ThinkPHP的目录结构、URL模式,如何创建项目的入口文件和开启调试模式,以及控制器、模板和模型的基础认识。

ThinkPHP3快速入门教程-:基础的更多相关文章

  1. ThinkPHP3快速入门教程二:数据CURD

    CURD(创建[Create].更新[Updata].读取[Read].删除[Delete]),定义了用于处理数据的基本原子操作. CURD在具体的应用中并非一定使用create.updata.rea ...

  2. ThinkPHP3快速入门教程三:查询语言

    一.查询语言简介: ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到where方法等连贯相关方法操作即可, 此框架查询系统可以解 ...

  3. ThinkPHP3.1快速入门教程

    ThinkPHP3.1快速入门教程 http://www.thinkphp.cn/info/155.html   ------------------------------------------- ...

  4. 专为设计师而写的GitHub快速入门教程

    专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li     原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...

  5. EntityFramework6 快速入门教程

    EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕 ...

  6. Realm for Android快速入门教程

    介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...

  7. .NET Core 快速入门教程

    .NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基础开发环境的搭建.第一个.NET ...

  8. .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)

    一.前言 本篇开发环境?1.操作系统:CentOS7(因为ken比较偏爱CentOS7)2.SDK版本:.NET Core 2.0 Preview 你可能需要的前置知识1.了解如何通过Hyper-V安 ...

  9. MySQL 快速入门教程

    转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...

随机推荐

  1. Android随笔之——Android单元测试

    在实际开发中,开发android软件的过程需要不断地进行测试.所以掌握Android的单元测试是极其重要的.您应该把单元测试作为Android应用开发周期的一部分,精心编写的测试可以在开发早起帮你发现 ...

  2. [c++] constexpr and literal class

    稀奇古怪的新特性,菜鸟在此啄上一啄. 1. When should literal classes be used in C++?   2. int i; // not constant const ...

  3. php+phpStorm+xdebug配置方法

    1.下载xdebug文件 http://xdebug.org/wizard.php 将phpinfo()的源代码复制到文本框中,xdebug会提示如何配置和下载哪个版本的xdebug. 全部下载地址: ...

  4. java.util.concurrent包详细分析--转

    原文地址:http://blog.csdn.net/windsunmoon/article/details/36903901 概述 Java.util.concurrent 包含许多线程安全.测试良好 ...

  5. C# 将PDF文件转换为word格式

    Pdf(Portable Document Format)意为“便携式文档格式”,是现在最流行的文件格式之一,它有很多优点如:尺寸较小.阅读方便.操作系统平台通用等,非常适合在网络上传播和使用.如今在 ...

  6. 安装infer整个过程

    日期:2015-06-26 孟起  15:43:25 大神.. 孟起  15:43:38 我是不是照着这个安装 HelloWorld  15:45:05 直接找二进制文件安卓就行 孟起  15:46: ...

  7. 浅析Openflow

    这应该算是我在博客园的第一篇技术性的文章. OH,不,这不是一篇技术性的文章,只是一篇很好玩的浅显分析接触到的技术的文章.只是个人的理解,并没有任何的代码和执行的操作.初次带来的,是从08年开始火起来 ...

  8. H5基于iScroll实现下拉刷新,上拉加载更多

    前言 前一段有个手机端的项目需要用到下拉刷新和上拉加载更多的效果,脑海里第一反映就是微博那种效果,刚开始的理解有些偏差,以为下拉也是追加数据,上拉也是追加数据,后请教同事后发现其实下拉只是刷新最新数据 ...

  9. [转]C#中的string.Format()的JS版本

    String.prototype.format = function (args) { var result = this; if (arguments.length > 0) { var re ...

  10. 前端 angular 和 bootstrap 的安装步骤

    1.安装bower模块: npm install -g bower --registry=http://registry.npm.taobao.org 2.创建.bowerrc 文件存放 前端相关的模 ...