thinkphp がモジュールをバインドする方法

WBOY
リリース: 2023-05-29 14:26:09
オリジナル
705 人が閲覧しました

インターネット技術の発展に伴い、デザインフレームワークとしてMVCパターンを採用するWebサイトやアプリケーションが増えており、その中でもMVCパターンの一つとしてThinkPHPに代表されるPHPフレームワークがよく使われています。 ThinkPHP フレームワークでは、モジュールは非常に重要な概念であり、モジュールを使用してアプリケーションをさまざまな機能モジュールに分割し、管理とメンテナンスを容易にすることができます。しかし、初心者にとってモジュールのバインド方法が問題になるかもしれないので、以下では ThinkPHP がどのようにモジュールをバインドするかを詳しく紹介します。

1. モジュールの作成

モジュールのバインドを開始する前に、まずモジュールを作成します。 Blog という名前のモジュールを作成する場合を例に挙げると、ThinkPHP フレームワークのアプリケーション ディレクトリに Blog という名前のディレクトリを作成し、Blog ディレクトリに Index という名前のコントローラと Index.html という名前のコントローラ テンプレート ファイルを作成する必要があります。具体的な操作は次のとおりです。

  1. ThinkPHP アプリケーション ディレクトリを開きます。通常、これは www ディレクトリの下にある Application という名前のディレクトリです。
  2. アプリケーション ディレクトリに Blog という名前のディレクトリを作成します。ディレクトリ名はモジュール名と同じである必要があります。
  3. ブログ ディレクトリに Index という名前のコントローラー ファイルを作成します。コントローラー ファイル名はコントローラー クラス名と同じである必要があります (この例では、コントローラー クラス名は IndexController 、ファイル名は IndexController.class です)。 php)。
  4. Web ページのリクエストを処理するために、インデックス コントローラー ファイルに Index という名前のメソッドを追加します。
  5. Web ページのコンテンツを表示するには、ブログ ディレクトリにindex.html という名前のテンプレート ファイルを作成します。

コード例:

コントローラーファイル IndexController.class.php:

<?php
namespace BlogController;
use ThinkController;

class IndexController extends Controller {
    public function index(){
        $this->display();
    }
}
ログイン後にコピー

テンプレートファイルindex.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
</head>
<body>
    <h1>Welcome to my blog!</h1>
</body>
</html>
ログイン後にコピー

2. バインディングの定義モジュール

ブログ モジュールを作成した後、どのモジュールにアクセスする必要があるかをシステムに知らせるために、それをアプリケーションにバインドする必要があります。具体的な操作は次のとおりです:

  1. 開くアプリケーション ディレクトリ内の構成ファイル config.php。
  2. 構成アイテム DEFAULT_MODULE を見つけて、その値を Blog に変更します。
  3. 変更した構成ファイルを保存します。

コード例:

config.php ファイル:

<?php
return array(
    'DEFAULT_MODULE'     => 'Blog', // 默认模块名
    ...
);
ログイン後にコピー

構成ファイルを変更した後、次の URL を通じてブログ モジュールにアクセスできます:

http://yourdomain/Blog

3. サブモジュールのバインド

場合によっては、モジュールを複数のサブモジュールに分割する必要があります。たとえば、ブログ モジュールでは、記事を次のように分割できます。リストページと記事詳細ページは別のサブモジュールとして作成されます。具体的な操作は次のとおりです。

  1. Blog ディレクトリの下に Article という名前のディレクトリを作成します。
  2. 記事リストを表示するために、Article ディレクトリに Index という名前のコントローラと list.html という名前のテンプレート ファイルを作成します。
  3. 記事の詳細ページを表示するには、Details という名前のコントローラと、index.html という名前のテンプレート ファイルを Article ディレクトリに作成します。

コントローラー ファイル Article/IndexController.class.php:

<?php
namespace BlogControllerArticle;
use ThinkController;

class IndexController extends Controller {
    public function index(){
        $this->display();
    }
}
ログイン後にコピー

コントローラー ファイル Article/DetailsController.class.php:

<?php
namespace BlogControllerArticle;
use ThinkController;

class DetailsController extends Controller {
    public function index(){
        $this->display();
    }
}
ログイン後にコピー

テンプレート ファイルArticle/list .html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Article List</title>
</head>
<body>
    <h1>Article List</h1>
</body>
</html>
ログイン後にコピー

テンプレート ファイルArticle/index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Article Details</title>
</head>
<body>
    <h1>Article Details</h1>
</body>
</html>
ログイン後にコピー
  1. アプリケーション ディレクトリで設定ファイル config.php を開きます。
  2. 構成アイテム URL_CASE_INSENSITIVE を見つけて、その値を true に変更して、URL の大文字と小文字を区別しないようにします。
  3. 構成アイテム MODULE_ALLOW_LIST を見つけて、その値を Blog, Blog/Article に変更して、Blog および Blog/Article モジュールへのアクセスを許可します。
  4. 変更した構成ファイルを保存します。

コード例:

config.php ファイル:

<?php
return array(
    'DEFAULT_MODULE'     => 'Blog', // 默认模块名
    'URL_CASE_INSENSITIVE'  => true, // URL不区分大小写
    'MODULE_ALLOW_LIST' => array('Blog','Blog/Article'), // 允许访问的模块
    ...
);
ログイン後にコピー

構成ファイルを変更した後、次の URL から Article サブモジュールにアクセスできます:

http://yourdomain/Blog/Article/index

http://yourdomain/Blog/Article/details

サブモジュールをバインドするときに注意する必要があるのは、コントローラー ファイルとテンプレート ファイル グループ化して保存する必要があり、コントローラー クラス名にグループ化プレフィックスを追加する必要があります。たとえば、この例では、コントローラー クラスの名前空間は BlogControllerArticle です。同時に、構成ファイルは、親モジュールと子モジュールへのアクセスを許可されるモジュールを制限する必要があります。

4. 概要

バインディング モジュールは、ThinkPHP MVC モデルにおける非常に重要なリンクです。バインディング モジュールを通じて、アプリケーションを複数の機能モジュール、コード ロジック、およびレイアウトが分離されているため、管理とメンテナンスが容易です。この記事では、モジュールの作成からモジュールのバインド、サブモジュールのバインドまで、ThinkPHP がモジュールをバインドする方法について詳しく紹介します。

以上がthinkphp がモジュールをバインドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート