" /> ">
Maison php教程 PHP开发 ThinkPHP3.1快速入门(1)基础

ThinkPHP3.1快速入门(1)基础

Dec 20, 2016 am 11:29 AM

简介

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

目录结构

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是不能直接执行的,该文件只能在项目入口文件中调用才能正常运行(后面会讲到),这是很多新手很容易犯的一个错误。

 

入口文件

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

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

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

http://localhost/app/

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

23.jpg

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

├─index.php 项目入口文件

├─Common 项目公共文件目录

├─Conf 项目配置目录

├─Lang 项目语言目录

├─Lib 项目类库目录

│ ├─Action Action类库目录

│ ├─Behavior 行为类库目录

│ ├─Model 模型类库目录

│ └─Widget Widget类库目录

├─Runtime 项目运行时目录

│ ├─Cache 模板缓存目录

│ ├─Data 数据缓存目录

│ ├─Logs 日志文件目录

│ └─Temp 临时缓存目录

└─Tpl 项目模板目录

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

define('APP_NAME','app');

define('APP_PATH','./app/');

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

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

http://localhost/

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

配置

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

// 项目配置文件

return array(

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

    // 更多配置参数

    //...

);

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

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

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

 

控制器

需要为每个模块定义一个控制器类,控制器类的命名规范是:模块名+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访问到该操作的。

 

URL请求

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

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

这种URL模式就是系统默认的PATHINFO模式,不同的URL模式获取模块和操作的方法不同,ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式。普通模式:也就是传统的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/

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文件,内容如下:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

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

接下来,就可以用下面的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。
例如:

 

   hello {$name}

 

 

    hello, {$name}!

 

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

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

 

   Select Data

 

 

    

    {$vo.id}--{$vo.data}

    

 

volist标签是内置模板引擎用于输出数据集的标签。{$vo.id} 和 {$vo.data} 的用法和Smarty类似,就是用于输出数据的字段,这里就表示输出think_data表的id和data字段的值。
我们访问

http://localhost/app/

会输出

1--thinkphp

2--php

3--framework

如果你看到了上面的输出结果,那么恭喜你已经拿到了入门ThinkPHP的钥匙!

 

总结

本篇我们学习了ThinkPHP的目录结构、URL模式和如何创建项目的入口文件和控制器、模板,后面会继续了解对数据的CURD操作。

 以上就是ThinkPHP3.1快速入门(1)基础的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Apprentissage Python : Comment installer la bibliothèque pandas dans le système Apprentissage Python : Comment installer la bibliothèque pandas dans le système Jan 09, 2024 pm 04:42 PM

Démarrage rapide : comment installer la bibliothèque pandas dans Python nécessite des exemples de code spécifiques 1. Présentation Python est un langage de programmation largement utilisé avec un puissant écosystème de développement qui comprend de nombreuses bibliothèques pratiques. Pandas est l'une des bibliothèques d'analyse de données les plus populaires. Elle fournit des structures de données et des outils d'analyse de données efficaces, facilitant le traitement et l'analyse des données. Cet article explique comment installer la bibliothèque pandas en Python et fournit des exemples de code correspondants. 2. Installez Py

Démarrage rapide avec la bibliothèque d'animation Mojs : un guide du module Explosion Démarrage rapide avec la bibliothèque d'animation Mojs : un guide du module Explosion Sep 02, 2023 pm 11:49 PM

Nous commençons cette série en apprenant à animer des éléments HTML à l'aide de mojs. Dans ce deuxième tutoriel, nous continuons à utiliser le module Shape pour animer les formes SVG intégrées. Le troisième didacticiel couvre d'autres façons d'animer des formes SVG à l'aide de ShapeSwirl et du module stagger. Nous allons maintenant apprendre à animer différentes formes SVG en rafales à l'aide du module Burst. Ce tutoriel dépendra des concepts que nous avons abordés dans les trois premiers tutoriels. Si vous ne les avez pas encore lus, je vous recommande de les lire d'abord. Création d'une animation en rafale de base La première chose que nous devons faire avant de créer une animation en rafale est d'instancier un objet Burst. Ensuite, nous pouvons spécifier différentes propriétés

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter un service de streaming audio simple Démarrage rapide : utilisez les fonctions du langage Go pour implémenter un service de streaming audio simple Jul 29, 2023 pm 11:45 PM

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter un service de streaming audio simple Introduction : Les services de streaming audio sont de plus en plus populaires dans le monde numérique d'aujourd'hui, ce qui nous permet de lire des fichiers audio directement sur le réseau sans effectuer de téléchargement complet. Cet article explique comment utiliser les fonctions du langage Go pour implémenter rapidement un service de streaming audio simple afin que vous puissiez mieux comprendre et utiliser cette fonction. Étape 1 : Préparation Tout d'abord, vous devez installer l'environnement de développement du langage Go. Vous pouvez le télécharger sur le site officiel (https://golan

Recommandez cinq frameworks couramment utilisés en langage Go pour vous aider à démarrer rapidement Recommandez cinq frameworks couramment utilisés en langage Go pour vous aider à démarrer rapidement Feb 24, 2024 pm 05:09 PM

Titre : Démarrez rapidement : cinq cadres de langage Go courants recommandés Ces dernières années, avec la popularité du langage Go, de plus en plus de développeurs ont choisi d'utiliser Go pour le développement de projets. Le langage Go a reçu une large attention pour son efficacité, sa simplicité et ses performances supérieures. Dans le développement du langage Go, le choix d'un framework approprié peut améliorer l'efficacité du développement et la qualité du code. Cet article présentera cinq frameworks couramment utilisés dans le langage Go et joindra des exemples de code pour aider les lecteurs à démarrer rapidement. Framework Gin Gin est un framework Web léger, rapide et efficace.

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples de reconnaissance d'images Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples de reconnaissance d'images Jul 30, 2023 pm 09:49 PM

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples de reconnaissance d'images. Dans le développement technologique actuel, la technologie de reconnaissance d'images est devenue un sujet brûlant. En tant que langage de programmation rapide et efficace, le langage Go a la capacité d'implémenter des fonctions de reconnaissance d'images. Cet article fournira aux lecteurs un guide de démarrage rapide en utilisant les fonctions du langage Go pour implémenter des fonctions simples de reconnaissance d'images. Tout d’abord, nous devons installer l’environnement de développement du langage Go. Vous pouvez télécharger la version appropriée sur le site officiel de Go Language (https://golang.org/)

Apprenez à démarrer rapidement en utilisant cinq outils de visualisation Kafka Apprenez à démarrer rapidement en utilisant cinq outils de visualisation Kafka Jan 31, 2024 pm 04:32 PM

Démarrage rapide : un guide d'utilisation de cinq outils de visualisation Kafka 1. Outils de surveillance Kafka : Introduction Apache Kafka est un système de messagerie distribué de publication-abonnement qui peut gérer de grandes quantités de données et fournir un débit élevé et une faible latence. En raison de la complexité de Kafka, des outils de visualisation sont nécessaires pour faciliter la surveillance et la gestion des clusters Kafka. 2.Outils de visualisation Kafka : cinq choix majeurs KafkaManager : KafkaManager est une communauté web open source

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter un service de streaming vidéo simple Démarrage rapide : utilisez les fonctions du langage Go pour implémenter un service de streaming vidéo simple Aug 01, 2023 pm 02:29 PM

Démarrage rapide : implémentation d'un service de streaming vidéo simple à l'aide des fonctions du langage Go Introduction : Les services de streaming vidéo jouent un rôle important dans les applications modernes. Cet article explique comment utiliser les fonctions du langage Go pour implémenter un service de streaming vidéo simple. Nous utiliserons le package net/http du langage Go pour gérer les requêtes HTTP, et le combinerons avec la bibliothèque FFmpeg pour gérer l'encodage et le décodage des flux vidéo. Étape 1 : Installer FFmpeg Avant de commencer à écrire du code, nous devons installer la bibliothèque FFmpeg. Accessible via le site officiel de FFmpeg

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples d'agrégation de données Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples d'agrégation de données Jul 29, 2023 pm 02:06 PM

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter des fonctions simples d'agrégation de données. Dans le développement de logiciels, nous rencontrons souvent des situations où nous devons agréger un ensemble de données. Les opérations d'agrégation peuvent compter, résumer, calculer, etc., pour analyser et afficher des données. Dans le langage Go, nous pouvons utiliser des fonctions pour implémenter des fonctions simples d'agrégation de données. Tout d’abord, nous devons définir un type de données pour représenter les données que nous souhaitons agréger. Supposons que nous ayons le tableau des notes d'un élève et que chaque élève ait deux champs : nom et note, nous pouvons alors créer la structure suivante

See all articles