백엔드 개발 PHP 튜토리얼 ThinkPHP3.1基础知识快速入门_php实例

ThinkPHP3.1基础知识快速入门_php实例

Jun 07, 2016 pm 05:18 PM
시작하기

在当今众多的MVC框架中,ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,其遵循Apache2开源协议发布,自从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验及易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。是众多PHP开发人员的首选。本文就ThinkPHP3.1基础知识做一简述。

1.目录结构

ThinkPHP最新版本可以在官方网站(http://thinkphp.cn/down/framework.html)或者Github(https://github.com/liu21st/thinkphp/downloads)下载。
把下载后的压缩文件解压到你的WEB目录(或者任何目录都可以),框架的目录结构为:

├─ThinkPHP.php 框架入口文件
 ├─Common 框架公共文件
 ├─Conf 框架配置文件
 ├─Extend 框架扩展目录
 ├─Lang 核心语言包目录
 ├─Lib 核心类库目录
 │ ├─Behavior 核心行为类库
 │ ├─Core 核心基类库
 │ ├─Driver 内置驱动
 │ │ ├─Cache 内置缓存驱动
 │ │ ├─Db 内置数据库驱动
 │ │ ├─TagLib 内置标签驱动
 │ │ └─Template 内置模板引擎驱动
 │ └─Template 内置模板引擎
 └─Tpl 系统模板目录

로그인 후 복사

注意,框架的公共入口文件ThinkPHP.php是不能直接执行的,该文件只能在项目入口文件中调用才能正常运行(后面会讲到),这是很多新手很容易犯的一个错误。

2.入口文件

在开始之前,你需要一个Web服务器和PHP运行环境,如果你暂时还没有,我们推荐使用集成开发环境WAMPServer(是一个集成了Apache、PHP和MySQL的开发套件,而且支持多个PHP版本、MySQL版本和Apache版本的切换)来使用ThinkPHP进行本地开发和测试。
接下来我们先在WEB根目录下面创建一个app子目录(这个app就是我们的项目名),然后在该目录下面创建一个index.php文件,添加一行简单的代码:

<&#63;php
 require '/ThinkPHP框架所在目录/ThinkPHP.php';

로그인 후 복사

这行代码的作用就是加载ThinkPHP框架的入口文件ThinkPHP.php,这是所有基于ThinkPHP开发应用的第一步。
然后,在浏览器中访问这个入口文件。

http://localhost/app/

로그인 후 복사

一般Web服务器的默认文件是index.php,所以我们可以不需要在URL地址中加上index.php。运行后我们会看到欢迎页面,

而且已经自动生成了项目目录,目录结构如下:

├─index.php 项目入口文件
 ├─Common 项目公共文件目录
 ├─Conf 项目配置目录
 ├─Lang 项目语言目录
 ├─Lib 项目类库目录
 │ ├─Action Action类库目录
 │ ├─Behavior 行为类库目录
 │ ├─Model 模型类库目录
 │ └─Widget Widget类库目录
 ├─Runtime 项目运行时目录
 │ ├─Cache 模板缓存目录
 │ ├─Data 数据缓存目录
 │ ├─Logs 日志文件目录
 │ └─Temp 临时缓存目录
 └─Tpl 项目模板目录
로그인 후 복사

如果你希望项目的入口文件移动到app目录的外面,那么只需要修改入口文件index.php的内容为:

<&#63;php
define('APP_NAME','app');
define('APP_PATH','./app/');
 require '/ThinkPHP框架所在目录/ThinkPHP.php';
로그인 후 복사

APP_NAME和APP_PATH分部用于定义项目名和项目目录,项目名通常就是指项目的目录名称。
移动并修改完项目的入口文件后,我们就可以通过

http://localhost/
로그인 후 복사

访问app项目了。当然你也可以在Web根目录下面创建多个子目录来部署多个项目。

3.调试模式

ThinkPHP的运行模式包括调试模式和部署模式,默认情况下是运行在部署模式下面。部署模式下面性能优先,并且尽可能少地抛出错误信息,调试模式则以除错方便优先,关闭任何缓存,而且尽可能多的抛出错误信息,所以对性能有一定的影响。部署模式采用了项目编译机制,第一次运行会对核心和项目相关文件进行编译缓存,由于编译后会影响开发过程中对配置文件、函数文件和数据库修改的生效(除非你修改后手动清空Runtime下面的缓存文件)。因此为了避免以上问题,我们强烈建议新手在使用ThinkPHP开发的过程中使用调试模式,这样可以更好的获取错误提示和避免一些不必要的问题和烦恼。
开启调试模式很简单,我们只需要在入口文件的开头加上一行常量定义代码:

<&#63;php
define('APP_DEBUG',TRUE); // 开启调试模式
 require '/ThinkPHP框架所在目录/ThinkPHP.php';
로그인 후 복사

开发完成后,我们实际进行项目部署的时候,删除这行常量定义代码即可,或者改成:

define('APP_DEBUG',false); // 关闭调试模式
로그인 후 복사


4.配置

每个项目都有一个独立的配置文件(位于项目目录的Conf/config.php),配置文件的定义格式均采用PHP返回数组的方式,例如:

// 项目配置文件
 return array(
 '配置参数' => '配置值', 
 // 更多配置参数
 //...
 );
로그인 후 복사

一旦有需要,我们就可以在项目配置文件中添加相关配置项目。通常我们提到的添加配置项目,就是指在项目配置文件中添加:

'配置参数' => '配置值', 

로그인 후 복사

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

5.控制器

需要为每个模块定义一个控制器类,控制器类的命名规范是:
模块名+Action.class.php (模块名采用驼峰法并且首字母大写)
系统的默认模块是Index,对应的控制器就是项目目录下面的Lib/Action/IndexAction.class.php,类名和文件名一致。默认操作是index,也就是控制器的一个public方法。初次生成项目目录结构的时候,系统已经默认生成了一个默认控制器(就是之前看到的欢迎页面),我们把index方法改成下面的代码:

class IndexAction extends Action {
 public function index(){
 echo 'hello,world!';
 }
 }

로그인 후 복사

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

6.URL请求

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

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

로그인 후 복사

这种URL模式就是系统默认的PATHINFO模式,不同的URL模式获取模块和操作的方法不同,ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式。

普通模式:也就是传统的GET传参方式来指定当前访问的模块和操作,例如:

http://localhost/app/&#63;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/

로그인 후 복사

PATHINFO地址的第一个参数表示模块,第二个参数表示操作。
PATHINFO模式下面,URL是可定制的,例如,通过下面的配置:

'URL_PATHINFO_DEPR'=>'-', // 更改PATHINFO参数分隔符
로그인 후 복사

我们还可以支持下面的URL访问:

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

로그인 후 복사

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

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
 </IfModule>

로그인 후 복사

接下来,就可以用下面的URL地址访问了:

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

로그인 후 복사

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

http://localhost/app/&#63;s=/module/action/var/value/

로그인 후 복사

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

7.视图

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!
로그인 후 복사

8.读取数据

在开始之前,我们首先在数据库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)了,M函数的用法还有很多,我们以后会深入了解。
定义好控制器后,我们修改模板文件,添加数据输出标签如下:

<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/
로그인 후 복사
로그인 후 복사

会输出

1--thinkphp
2--php
3--framework
로그인 후 복사

如果发生错误,检查你是否开启了调试模式或者清空Runtime目录下面的缓存文件。
如果你看到了上面的输出结果,那么至此你已经掌握了ThinkPHP入门的基础知识!

总结:

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

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

시간을 투자할 가치가 있는 확산 모델 튜토리얼(Purdue University 제공) 시간을 투자할 가치가 있는 확산 모델 튜토리얼(Purdue University 제공) Apr 07, 2024 am 09:01 AM

확산은 더 잘 모방할 수 있을 뿐만 아니라 "창조"할 수도 있습니다. 확산 모델(DiffusionModel)은 이미지 생성 모델입니다. AI 분야에서 잘 알려진 GAN, VAE 알고리즘과 비교할 때 확산 모델은 먼저 이미지에 노이즈를 추가한 다음 점차적으로 노이즈를 제거하는 프로세스를 취합니다. 원본 이미지의 노이즈를 제거하고 복원하는 방법이 알고리즘의 핵심 부분입니다. 최종 알고리즘은 임의의 잡음이 있는 이미지에서 이미지를 생성할 수 있습니다. 최근 몇 년 동안 생성 AI의 경이적인 성장으로 인해 텍스트-이미지 생성, 비디오 생성 등에서 많은 흥미로운 애플리케이션이 가능해졌습니다. 이러한 생성 도구의 기본 원리는 이전 방법의 한계를 극복하는 특수 샘플링 메커니즘인 확산의 개념입니다.

클릭 한 번으로 PPT를 생성해보세요! 키미: 'PPT 이주노동자'가 먼저 대중화되게 해주세요 클릭 한 번으로 PPT를 생성해보세요! 키미: 'PPT 이주노동자'가 먼저 대중화되게 해주세요 Aug 01, 2024 pm 03:28 PM

키미: 단 한 문장이면 단 10초만에 PPT가 완성됩니다. PPT가 너무 짜증나네요! 회의를 하려면 PPT가 있어야 하고, 주간 보고서를 작성하려면 PPT가 있어야 하며, 누군가를 부정행위를 했다고 비난하려면 PPT를 보내야 합니다. 대학은 PPT 전공을 공부하는 것과 비슷합니다. 수업 시간에 PPT를 보고 수업 후에 PPT를 하는 거죠. 아마도 데니스 오스틴이 37년 전 PPT를 발명했을 때, 언젠가 PPT가 이렇게 널리 보급될 것이라고는 예상하지 못했을 것입니다. 우리가 PPT를 만들면서 힘들었던 경험을 이야기하면 눈물이 납니다. "20페이지가 넘는 PPT를 만드는 데 3개월이 걸렸고, 수십 번 수정했어요. PPT를 보면 토할 것 같았어요. 한창 때는 하루에 다섯 장씩 했는데, 숨소리까지 냈어요." PPT였어요." 즉석 회의가 있으면 해야죠.

CVPR 2024 시상식 전체가 발표되었습니다! 약 10,000명이 오프라인으로 컨퍼런스에 참석했으며 Google의 중국인 연구원이 최우수 논문상을 수상했습니다. CVPR 2024 시상식 전체가 발표되었습니다! 약 10,000명이 오프라인으로 컨퍼런스에 참석했으며 Google의 중국인 연구원이 최우수 논문상을 수상했습니다. Jun 20, 2024 pm 05:43 PM

베이징 시간으로 6월 20일 이른 아침, 시애틀에서 열린 최고의 국제 컴퓨터 비전 컨퍼런스인 CVPR2024가 최우수 논문 및 기타 수상작을 공식 발표했습니다. 올해는 우수논문 2편, 최우수 학생논문 2편 등 총 10편의 논문이 수상하였습니다. 컴퓨터 비전(CV) 분야 최고 학회는 매년 수많은 연구기관과 대학이 모여드는 CVPR이다. 통계에 따르면 올해 총 1만1532편의 논문이 제출돼 2719편이 채택돼 합격률 23.6%를 기록했다. Georgia Institute of Technology의 CVPR2024 데이터 통계 분석에 따르면 연구 주제 관점에서 가장 많은 논문이 이미지 및 비디오 합성 및 생성입니다(Imageandvideosyn

C 언어 학습을 시작하기 위한 5가지 프로그래밍 소프트웨어 C 언어 학습을 시작하기 위한 5가지 프로그래밍 소프트웨어 Feb 19, 2024 pm 04:51 PM

널리 사용되는 프로그래밍 언어인 C언어는 컴퓨터 프로그래밍에 종사하려는 사람들이 꼭 배워야 할 기본 언어 중 하나이다. 그러나 초보자의 경우 새로운 프로그래밍 언어를 배우는 것이 다소 어려울 수 있습니다. 특히 관련 학습 도구와 교육 자료가 부족하기 때문입니다. 이번 글에서는 초보자가 C 언어를 시작하고 빠르게 시작할 수 있도록 도와주는 프로그래밍 소프트웨어 5가지를 소개하겠습니다. 최초의 프로그래밍 소프트웨어는 Code::Blocks였습니다. Code::Blocks는 무료 오픈 소스 통합 개발 환경(IDE)입니다.

기술 초보자의 필독서: C언어와 Python의 난이도 분석 기술 초보자의 필독서: C언어와 Python의 난이도 분석 Mar 22, 2024 am 10:21 AM

제목: 기술 초보자가 꼭 읽어야 할 책: C언어와 Python의 난이도 분석, 구체적인 코드 예제가 필요한 오늘날의 디지털 시대에 프로그래밍 기술은 점점 더 중요한 능력이 되었습니다. 소프트웨어 개발, 데이터 분석, 인공 지능과 같은 분야에서 일하고 싶거나 관심 있는 프로그래밍을 배우고 싶다면 적합한 프로그래밍 언어를 선택하는 것이 첫 번째 단계입니다. 많은 프로그래밍 언어 중에서 C 언어와 Python은 널리 사용되는 두 가지 프로그래밍 언어이며 각각 고유한 특성을 가지고 있습니다. 이번 글에서는 C언어와 Python의 난이도를 분석해보겠습니다.

PyCharm Community Edition 설치 가이드: 모든 단계를 빠르게 익히세요 PyCharm Community Edition 설치 가이드: 모든 단계를 빠르게 익히세요 Jan 27, 2024 am 09:10 AM

PyCharm Community Edition 빠른 시작: 자세한 설치 튜토리얼 전체 분석 소개: PyCharm은 개발자가 Python 코드를 보다 효율적으로 작성하는 데 도움이 되는 포괄적인 도구 세트를 제공하는 강력한 Python 통합 개발 환경(IDE)입니다. 이 문서에서는 PyCharm Community Edition을 설치하는 방법을 자세히 소개하고 초보자가 빠르게 시작할 수 있도록 구체적인 코드 예제를 제공합니다. 1단계: PyCharm Community Edition 다운로드 및 설치 PyCharm을 사용하려면 먼저 공식 웹사이트에서 다운로드해야 합니다.

베어메탈부터 700억 개의 매개변수가 있는 대형 모델까지 튜토리얼과 바로 사용할 수 있는 스크립트가 있습니다. 베어메탈부터 700억 개의 매개변수가 있는 대형 모델까지 튜토리얼과 바로 사용할 수 있는 스크립트가 있습니다. Jul 24, 2024 pm 08:13 PM

우리는 LLM이 대규모 데이터를 사용하여 대규모 컴퓨터 클러스터에서 훈련된다는 것을 알고 있습니다. 이 사이트는 LLM 훈련 프로세스를 지원하고 개선하는 데 사용되는 다양한 방법과 기술을 소개합니다. 오늘 우리가 공유하고 싶은 것은 기본 기술에 대해 심층적으로 살펴보고 운영 체제 없이도 수많은 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 방법을 소개하는 기사입니다. 이 기사는 기계가 생각하는 방식을 이해하여 일반 지능을 달성하기 위해 노력하는 AI 스타트업 Imbue에서 가져온 것입니다. 물론 운영 체제가 없는 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 것은 탐색과 시행착오로 가득 찬 쉬운 과정이 아니지만 Imbue는 마침내 700억 개의 매개변수를 사용하여 LLM을 성공적으로 교육했습니다. 과정이 쌓이다

RAG의 12가지 문제점을 카운트다운하는 NVIDIA 수석 아키텍트가 솔루션을 가르칩니다. RAG의 12가지 문제점을 카운트다운하는 NVIDIA 수석 아키텍트가 솔루션을 가르칩니다. Jul 11, 2024 pm 01:53 PM

검색 증강 생성(RAG)은 검색을 사용하여 언어 모델을 향상시키는 기술입니다. 특히, 언어 모델은 답변을 생성하기 전에 광범위한 문서 데이터베이스에서 관련 정보를 검색한 다음 이 정보를 사용하여 생성 프로세스를 안내합니다. 이 기술은 콘텐츠의 정확성과 관련성을 크게 향상시키고 환각 문제를 효과적으로 완화하며 지식 업데이트 속도를 높이고 콘텐츠 생성 추적성을 향상시킬 수 있습니다. RAG는 ​​의심할 여지 없이 인공 지능 연구에서 가장 흥미로운 분야 중 하나입니다. RAG에 대한 자세한 내용은 본 사이트의 칼럼 기사 "대형 모델의 단점을 보완하는 데 특화된 RAG의 새로운 발전은 무엇인가?"를 참조하시기 바랍니다. 이 리뷰는 이를 명확하게 설명합니다." 그러나 RAG는 완벽하지 않으며 사용자는 이를 사용할 때 몇 가지 "고통"에 직면하는 경우가 많습니다. 최근 NVIDIA의 고급 생성 AI 솔루션

See all articles