Heim >Backend-Entwicklung >PHP-Tutorial >Yii Framework Offizieller Serienleitfaden Serie 11 – Grundlagen: Module

Yii Framework Offizieller Serienleitfaden Serie 11 – Grundlagen: Module

黄舟
黄舟Original
2017-02-11 09:44:381332Durchsuche



Hinweis: Module werden ab Version 1.0.3 unterstützt.

Ein Modul ist eine unabhängige Softwareeinheit, die Modelle, Ansichten, Controller und andere unterstützende Komponenten enthält. In vielerlei Hinsicht sieht ein Modul wie eine Anwendung aus. Der Hauptunterschied besteht darin, dass ein Modul nicht einzeln bereitgestellt werden kann, sondern innerhalb einer Anwendung vorhanden sein muss. Benutzer können auf Controller in einem Modul genauso zugreifen, wie sie auf Controller in einer normalen Anwendung zugreifen würden. Das Modul

ist in einigen Szenarien nützlich. Bei großen Anwendungen müssen wir es möglicherweise in mehrere Module aufteilen, und jedes Modul kann unabhängig gewartet und bereitgestellt werden. Einige gängige Funktionen wie die Benutzerverwaltung und Kommentarverwaltung können in Form von Modulen entwickelt werden, sodass sie in zukünftigen Projekten problemlos wiederverwendet werden können.

1. Erstellen Sie ein Modul

Module werden in einem Verzeichnis organisiert und der Name des Verzeichnisses ist die eindeutige ID des Moduls. Die Struktur des Modulverzeichnisses ist dem Anwendungsbasisverzeichnis sehr ähnlich. Im Folgenden ist die typische Verzeichnisstruktur eines fourm-Moduls aufgeführt: Das

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

-Modul muss über eine von CWebModule geerbte Modulklasse verfügen. Der Name der Klasse wird durch den Ausdruck ucfirst($id).'Module' bestimmt, wobei $id die ID des Moduls (oder den Verzeichnisnamen des Moduls) darstellt. Modulklassen sind der zentrale Ort zum Speichern von Informationen, die zwischen Modulcode geteilt werden können. Beispielsweise können wir CWebModule::params zum Speichern von Modulparametern und CWebModule::components zum Teilen von Anwendungskomponenten auf Modulebene verwenden.

Tipp: Wir können Module in verwenden Zu erstellendes Gii Das Grundgerüst eines neuen Moduls, das vom Tool erstellt wurde.

2. Module verwenden

Um Module zu verwenden, platzieren Sie zunächst das Modulverzeichnis in modules des Anwendungsbasisverzeichnisses. Deklarieren Sie dann die Modul-ID im Modulattribut Ihrer App. Um beispielsweise das Modul forum oben zu verwenden, können wir die folgende Anwendungskonfiguration verwenden:



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


Module können auch mit anfänglichen Eigenschaftswerten konfiguriert werden. Der Ansatz ist dem Konfigurieren von Anwendungskomponenten sehr ähnlich. Beispielsweise kann ein forum-Modul in seiner Modulklasse eine Eigenschaft mit dem Namen postPerPage haben, die in der Anwendungskonfiguration wie folgt konfiguriert werden kann:



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


-Moduls kann über die Moduleigenschaft des aktuell aktiven Controllers zugegriffen werden. Innerhalb einer Modulinstanz können wir auf Informationen zugreifen, die auf Modulebene geteilt werden. Um beispielsweise auf die

-Informationen oben zuzugreifen, können wir den folgenden Ausdruck verwenden: postPerPage



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


Auf Controller-Aktionen in Modulen kann über Routen zugegriffen werden

. Angenommen, das obige moduleID/controllerID/actionID-Modul verfügt über einen Controller mit dem Namen forum, können wir über Routing PostController auf die Aktion forum/post/create in diesem Controller zugreifen. Die dieser Route entsprechende URL lautet create.http://www.php.cn/

Tipp: Wenn sich ein Controller in einem Unterverzeichnis des -Verzeichnisses befindet, können wir weiterhin das obige Routing verwenden Format. Angenommen, controllers befindet sich innerhalb von PostController , können wir über forum/controllers/admin auf die Aktion forum/admin/post/create zugreifen. create

3. Verschachtelte Module

Module können unendlich verschachtelt werden. Das bedeutet, dass ein Modul ein anderes Modul enthalten kann und dieses andere Modul andere Module enthalten kann. Wir nennen das erstere

übergeordnetes Modul und das letztere submodul. Submodule müssen im Modulattribut ihres übergeordneten Moduls definiert werden, genau wie wir das Modul zuvor in der Anwendungskonfiguration definiert haben.

Um auf Controller-Aktionen in untergeordneten Modulen zuzugreifen, sollten wir die Route parentModuleID/childModuleID/controllerID/actionID verwenden.

Das Obige ist der offizielle Yii Framework-Serienleitfaden Serie 11 – Grundkenntnisse: Modulinhalt Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn