ThinkPHP3快速入门教程-:基础

一、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://[email protected]: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模式,如何创建项目的入口文件和开启调试模式,以及控制器、模板和模型的基础认识。

时间: 2024-10-20 05:12:42

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

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

CURD(创建[Create].更新[Updata].读取[Read].删除[Delete]),定义了用于处理数据的基本原子操作. CURD在具体的应用中并非一定使用create.updata.read.delete字样的方法,但是他们完成的功能是一致的. 例如: ThinkPHP就是使用add.save.select和delete方法表示模型的CURD操作. 一.创建数据 CURD的Create操作通常会通过表单来提交数据,首先,我们在项目的Tpl/Form目录下面创建一个add.html模板

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

一.查询语言简介: ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到where方法等连贯相关方法操作即可, 此框架查询系统可以解决不同数据库的差异性,因些我们把框架的这一查询方式称之为查询语言.使其查询操作更加简单易懂. 二.查询方式: ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全. 1.使用字符串作为查询条件(最传统的方式,但是安全性不高),例如:

ThinkPHP3.1快速入门教程

ThinkPHP3.1快速入门教程 http://www.thinkphp.cn/info/155.html --------------------------------------------------------------------- ThinkPHP 3.1 完全开发手册 http://doc.thinkphp.cn/manual/

C#基础与实例教程最简单的C#快速入门教程【转自:http://www.82011433.com/Html/?6982.html】

c#基础与实例教程最简单的C#快速入门教程 在一小时内学会C#.使用例程,简单却完整的探索C#语言的构造和特点.本文特别适合有C++基础却没有太多精力学习C#的读者. 简介 C#是一种具有C++特性,Java样式及BASIC快速建模特性的编程语言.如果你已经知晓C++语言,本文将在不到一小时的时间内带你快速浏览C#的语法.如果熟悉Java语言,Java的编程结构.打包和垃圾回收的概念肯定对你快速学习C#大有帮助.所以我在讨论C#语言构造的时候会假设你知道C++. c#基础与实例教程最简单的C#快

Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二

开始部署 上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:Android端开发环境配置一 http://blog.csdn.net/jaikydota163/arti

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

C语言快速入门教程(一)

C语言快速入门教程(一) C语言概述(开发准备) 本节学习路线图: ps:标记3的表示不是很重要,知道有这个东西就行了;标记1表示非常重要,需要熟练掌握! 1.C语言的概述: 1.1  计算机与程序设计语言之间的关系? 答:计算机是由硬件与软件系统组成的;硬件---->物质基础;软件----->灵魂; 如果脱离了软件,计算机就是一台什么都做不了的裸机; 可以形象地比喻成人的大脑和身体;两个互不可缺! 1.2  程序设计语言的更新换代: 1.3 C语言的特点 1.4  最简单的HelloWorl

EntityFramework6 快速入门教程

EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕了不少弯路. 学习EF还是需要一些条件,使用EF并不意味着你就可以完全不跟数据库打交道了,要学好EF,数据库中的什么主键.外键.索引.SQL等你还是要懂,另外EF中将大量使用LINQ来进行数据查询,数据模型中还将涉及到特性与泛型,所以对于C#的基础要求还比较高. 在我看来EF并不适合初学者使用,虽然

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

原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目托管平台,许多企业也都是用GitHub来协同开发工作,当然我 们彩程也是其中之一.笔者最初决定学习Git也是因为在团队内部设计方案初步被开发出来后,难免会有一些细节需要调整,而为了调整几像素的问题再求前端工 程师出马,其实是很影响整体效率的,所以希望通过学习GitHub好在必要的时候直接参与开发,能发挥自己的一点CSS技术以更直接快速的解决问题. 但是期间竟然发现网上无一篇为设计师而备的G