ホームページ  >  記事  >  バックエンド開発  >  Yii Framework 公式シリーズガイド シリーズ 11 - 基本: モジュール

Yii Framework 公式シリーズガイド シリーズ 11 - 基本: モジュール

黄舟
黄舟オリジナル
2017-02-11 09:44:381312ブラウズ



注: モジュールはバージョン 1.0.3 以降でサポートされます。

モジュールは、モデル、ビュー、コントローラー、その他のサポートコンポーネントを含む独立したソフトウェアユニットです。 多くの点で、モジュールはアプリケーションに似ています。主な違いは、モジュールは個別にデプロイできず、アプリケーション内に存在する必要があることです。 ユーザーは、通常のアプリケーションのコントローラーにアクセスするのと同じように、モジュール内のコントローラーにアクセスできます。

モジュールは、いくつかのシナリオで役立ちます。大規模なアプリケーションの場合、アプリケーションを複数のモジュールに分割する必要がある場合がありますが、各モジュールは独立して保守およびデプロイできます。ユーザー管理やコメント管理などの一部の共通機能はモジュールの形式で開発できるため、将来のプロジェクトで簡単に再利用できます。

1. モジュールを作成します

モジュールはディレクトリに編成され、ディレクトリの名前はモジュールの一意の ID になります。 モジュール ディレクトリの構造は、アプリケーションのベース ディレクトリと非常によく似ています。 fourm モジュールの一般的なディレクトリ構造を以下に示します。 fourm 的模块的典型的目录结构:

forum/
   ForumModule.php            模块类文件
   components/                包含可复用的用户组件
      views/                  包含小物件的视图文件
   controllers/               包含控制器类文件
      DefaultController.php   默认的控制器类文件
   extensions/                包含第三方扩展
   models/                    包含模块类文件
   views/                     包含控制器视图和布局文件
      layouts/                包含布局文件
      default/                包含 DefaultController 的视图文件
         index.php            首页视图文件

模块必须有一个继承自 CWebModule 的模块类。类的名字通过表达式 ucfirst($id).'Module' 确定, 其中的 $id代表模块的 ID (或者说模块的目录名字)。 模块类是存储模块代码间可共享信息的中心位置。例如,我们可以使用CWebModule::params 存储模块参数,使用 CWebModule::components 分享模块级的 应用组件 .

提示: 我们可以使用Gii中的模块创建器创建新模块的基本骨架。

2. 使用模块

要使用模块,首先将模块目录放在 应用基础目录 的 modules 中。 然后在应用的 modules 属性中声明模块 ID 。例如,为了使用上面的 forum 模块, 我们可以使用如下 应用配置:



return array(
    ......
    'modules'=>array('forum',...),
    ......
);


模块也可以在配置时带有初始属性值。做法和配置 应用组件 很类似。 例如, forum 模块可以在其模块类中有一个名为postPerPage 的属性,它可以在 应用配置 中配置如下:



return array(
    ......
    'modules'=>array(
        'forum'=>array(
            'postPerPage'=>20,
        ),
    ),
    ......
);


模块的实例可通过当前活动控制器的 module 属性访问。在模块实例中,我们可以访问在模块级中共享的信息。 例如,为访问上面的 postPerPage 信息,我们可使用如下表达式:



$postPerPage=Yii::app()->controller->module->postPerPage;
// or the following if $this refers to the controller instance
// $postPerPage=$this->module->postPerPage;


模块中的控制器动作可以通过 路由 moduleID/controllerID/actionID 访问。 例如,假设上面的 forum 模块有一个名为 PostController 的控制器,我们就可以通过 路由 forum/post/create 访问此控制器中的 create 动作。 此路由对应的 URL 即 http://www.php.cn/.

提示: 如果一个控制器位于 controllers 目录的子目录中,我们仍然可以使用上述 路由 格式。 例如,假设PostController 位于 forum/controllers/admin 中,我们可以通过 forum/admin/post/create访问 createrrreee

モジュールには、CWebModule から継承するモジュール クラスが必要です。クラスの名前は式 ucfirst($id).'Module' によって決定されます。$id はモジュールの ID (またはモジュールのディレクトリ名) を表します。モジュール)。 モジュール クラスは、モジュール コード間で共有できる情報を保存する中心的な場所です。たとえば、CWebModule::params を使用してモジュール パラメーターを保存し、CWebModule::components を使用してモジュール レベルのアプリケーション コンポーネントを共有できます。

ヒント: Gii のモジュール クリエーターを使用して、新しいモジュール。 2. モジュールを使用する

モジュールを使用するには、まずアプリケーションのベース ディレクトリの modules にモジュール ディレクトリを配置します。 次に、アプリケーションの modules 属性でモジュール ID を宣言します。たとえば、上記の forum モジュールを使用するには、次のアプリケーション構成を使用できます:


🎜rrreee🎜🎜🎜🎜モジュールは、初期属性値を使用して構成することもできます。このアプローチは、アプリケーション コンポーネントの構成と非常によく似ています。 たとえば、forum モジュールは、そのモジュール クラスに postPerPage というプロパティを持つことができ、これはアプリケーション構成で次のように構成できます。 🎜 🎜🎜🎜モジュールのインスタンスには、現在アクティブなコントローラーのモジュール プロパティを通じてアクセスできます。モジュール インスタンス内では、モジュール レベルで共有される情報にアクセスできます。 たとえば、上記の postPerPage 情報にアクセスするには、次の式を使用できます: 🎜🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜🎜モジュール内のコントローラー アクションは、moduleID/controllerID 経由でルーティングできます。 /actionID アクセス。 たとえば、上記の forum モジュールに PostController という名前のコントローラがあるとすると、ルート forum/post/create を通じてこのコントロールにアクセスできます。ブラウザで >create アクションを実行します。 このルートに対応する URL は http://www.php.cn/ です。🎜🎜🎜🎜ヒント:🎜コントローラーが controllers のサブディレクトリにある場合ディレクトリにある場合でも、上記のルーティング形式を引き続き使用できます。 たとえば、PostControllerforum/controllers/admin にあるとすると、forum/admin/post/create を通じて <code>create にアクセスできます。 code> アクション。 🎜🎜🎜3. ネストされたモジュール🎜🎜モジュールは無限にネストできます。これは、あるモジュールに別のモジュールを含めることができ、この別のモジュールに他のモジュールを含めることができることを意味します。前者を 🎜親モジュール🎜 と呼び、後者を 🎜サブモジュール🎜 と呼びます。前にアプリケーション構成でモジュールを定義したのと同じように、サブモジュールは親モジュールの modules 属性で定義する必要があります。 🎜🎜子モジュールのコントローラーアクションにアクセスするには、ルートparentModuleID/childModuleID/controllerID/actionIDを使用する必要があります。 🎜🎜上記は、Yii Framework 公式シリーズ ガイド シリーズ 11 - 基礎知識: モジュールの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 🎜🎜🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。