検索
ホームページバックエンド開発PHPチュートリアルThinkPHP3.1 クイックスタート (1) 基本_PHP チュートリアル

ThinkPHP3.1 クイックスタート (1) 基本_PHP チュートリアル

Jul 15, 2016 pm 01:22 PM
mvcthinkphpはじめるそしてに基づくベース速いはい導入単純のために

はじめに


ThinkPHP は、MVC およびオブジェクト指向に基づいた高速でシンプルな軽量の PHP 開発フレームワークであり、Apache2 オープン ソース ライセンスの下でリリースされており、優れたパフォーマンスと最小限のコードを維持しています。開発経験と使いやすさにこだわり、独自機能を多数搭載し、WEBアプリケーション開発を強力にサポートします。

ディレクトリ構造

ThinkPHP の最新バージョンは、公式 Web サイト (http://thinkphp.cn/down/framework.html) または Github (https://github.com/liu21st/thinkphp/downloads) からダウンロードできます。
ダウンロードした圧縮ファイルを WEB ディレクトリ (または任意のディレクトリ) に解凍します。フレームワークのディレクトリ構造は次のとおりです。 §─ThinkPHP.php フレームワークエントリーファイル
§─共通フレームワーク公開ファイル
§─Conf フレームワーク設定ファイル
§─Extend Framework 拡張ディレクトリ
§─Lang コア言語パッケージのディレクトリ
§─Lib コアライブラリディレクトリ
│ §─Behavior コアビヘイビアーライブラリ
│ §─コアコア基本クラスライブラリ
│ §─ドライバー内蔵ドライバー
│ │ §─キャッシュ内蔵キャッシュドライバー
│ │ §─Db 内蔵データベースドライバー
│ │ §─TagLib 内蔵タグドライバー
│ │ └─テンプレート内蔵テンプレートエンジンドライバー
│ └─テンプレート内蔵テンプレートエンジン
└─Tplシステムテンプレートディレクトリ
コードをコピー

フレームワークのパブリック エントリ ファイル ThinkPHP.php は直接実行できないことに注意してください。このファイルはプロジェクト エントリ ファイルで呼び出された場合にのみ正常に実行されます (後で説明します)。これは多くの初心者が犯しやすい間違いです。

エントリーファイル

開始する前に、Web サーバーと PHP 実行環境が必要です。まだお持ちでない場合は、統合開発環境 WAMPServer (Apache、PHP、MySQL を統合し、複数の PHP バージョンと MySQL をサポートする開発キット) を使用することをお勧めします。バージョン)と Apache バージョンの切り替え)を使用して、ローカル開発とテストに ThinkPHP を使用します。
次に、まず WEB ルート ディレクトリの下にアプリのサブディレクトリを作成し (このアプリはプロジェクト名です)、次にそのディレクトリの下にindex.php ファイルを作成し、簡単なコード行を追加します:
require '/ThinkPHP フレームワークが配置されているディレクトリ/ThinkPHP.php';
コードをコピー

このコード行の機能は、ThinkPHP フレームワークのエントリー ファイル ThinkPHP.php をロードすることです。これは、ThinkPHP に基づいて開発されたすべてのアプリケーションの最初のステップです。
次に、ブラウザでこのエントリ ファイルにアクセスします。
http://localhost/app/
コードをコピー

通常、Web サーバーのデフォルトのファイルはindex.php であるため、URL アドレスにindex.php を追加する必要はありません。実行後、ようこそページが表示されます

そして、プロジェクトディレクトリが自動的に生成され、ディレクトリ構造は次のようになります:
リーリー
コードをコピー

プロジェクトのエントリ ファイルをアプリ ディレクトリの外に移動したい場合は、エントリ ファイルindex.php の内容を次のように変更するだけです:
定義('APP_NAME','app');
定義('APP_PATH','./app/');
require '/ThinkPHP フレームワークが配置されているディレクトリ/ThinkPHP.php';
コードをコピー

APP_NAME セクションと APP_PATH セクションは、プロジェクト名とプロジェクト ディレクトリを定義するために使用されます。プロジェクト名は通常、プロジェクトのディレクトリ名を指します。
プロジェクトのエントリファイルを移動して変更すると、渡すことができます
http://localhost/
コードをコピー

アプリプロジェクトにアクセスします。もちろん、Web ルート ディレクトリの下に複数のサブディレクトリを作成して、複数のプロジェクトをデプロイすることもできます。

デバッグモード

ThinkPHP の実行モードにはデバッグ モードとデプロイメント モードがあり、デフォルトではデプロイメント モードで実行されます。デプロイメント モードでは、パフォーマンスが優先され、できるだけ少ないエラー メッセージがスローされます。デバッグ モードでは、デバッグの利便性が優先され、キャッシュがオフになり、できるだけ多くのエラー メッセージがスローされるため、パフォーマンスに一定の影響があります。 。デプロイメント モードでは、プロジェクトのコンパイル メカニズムが採用されています。コンパイルは、開発プロセス中の構成ファイル、関数ファイル、およびデータベースの変更の有効性に影響するため、最初の実行では (ランタイムを手動でクリアしない限り)。変更後)以下のキャッシュファイル)。したがって、上記の問題を回避するために、初心者が ThinkPHP での開発中にデバッグ モードを使用することを強くお勧めします。そうすることで、エラー プロンプトをより適切に取得し、不要な問題や煩わしさを回避できるようになります。
デバッグ モードをオンにするのは非常に簡単で、エントリ ファイルの先頭に定数定義コードを 1 行追加するだけです。 リーリー
コードをコピーします

開発が完了した後、実際にプロジェクトをデプロイするときに、定数定義コードのこの行を削除するか、次のように変更するだけです:
define('APP_DEBUG',false); // デバッグモードをオフにする
コードをコピー


構成

各プロジェクトには独立した設定ファイルがあります (プロジェクト ディレクトリの Conf/config.php にあります)。設定ファイルの定義形式は、配列を返す PHP のメソッドを採用しています。例:
//プロジェクト設定ファイル
リーリー
コードをコピー

一旦有需要,我们就可以在项目配置文件中添加相关配置项目。通常我们提到的添加配置项目,就是指在项目配置文件中添加:
'配置参数' => '配置值',
复制代码

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

控制器

需要为每个模块定义一个控制器类,控制器类的命名规范是:
模块名+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文件,内容如下:
<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/?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, &#39;thinkphp&#39;),
 (2, &#39;php&#39;),
 (3, &#39;framework&#39;);

复制代码

如果我们需要读取数据库中的数据,就需要在项目配置文件中添加数据库连接信息如下:
// 添加数据库配置信息
'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(&#39;Data&#39;); // 实例化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模式,如何创建项目的入口文件和开启调试模式,以及控制器、模板和模型的基础认识,后面会继续了解对数据的CURD操作。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446943.htmlTechArticle简介 ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。Apr 17, 2025 am 12:22 AM

HTTPキャッシュヘッダーの主要なプレーヤーには、キャッシュコントロール、ETAG、およびラスト修飾が含まれます。 1.Cache-Controlは、キャッシュポリシーを制御するために使用されます。例:キャッシュコントロール:Max-Age = 3600、public。 2。ETAGは、一意の識別子を介してリソースの変更を検証します。例:ETAG: "686897696A7C876B7E"。 3. Last-Modifiedは、リソースの最後の変更時間を示しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHP:サーバー側のスクリプト言語の紹介PHP:サーバー側のスクリプト言語の紹介Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査しますPHPとWeb:その長期的な影響を調査しますApr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

なぜPHPを使用するのですか?利点と利点が説明されましたなぜPHPを使用するのですか?利点と利点が説明されましたApr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)