Heim >Backend-Entwicklung >PHP-Tutorial >Yii Framework Offizieller Serienleitfaden Serie 11 – Grundlagen: Module
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.
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.
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, ), ), ...... );
-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;
. 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/
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 erstereTipp: Wenn sich ein Controller in einem Unterverzeichnis des -Verzeichnisses befindet, können wir weiterhin das obige Routing verwenden Format. Angenommen,
controllers
befindet sich innerhalb vonPostController
, können wir überforum/controllers/admin
auf die Aktionforum/admin/post/create
zugreifen.create
ü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)!