Heim > php教程 > PHP开发 > Zend Framework-Tutorial: Grundregeln und Verwendung des Modells

Zend Framework-Tutorial: Grundregeln und Verwendung des Modells

高洛峰
Freigeben: 2017-01-03 13:47:00
Original
1268 Leute haben es durchsucht

Die Beispiele in diesem Artikel beschreiben die Grundregeln und die Verwendung des Modells im Zend Framework-Tutorial. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Hier sprechen wir über das Modell in Zend. Tatsächlich ist die Modellverarbeitung in Zend recht einfach.

Das liegt vor allem an der Autoload-Funktion. Im Gegensatz zu anderen Frameworks werden für Modelle komplexe Basisklassen definiert.

Wenn Sie ein Modell definieren möchten, müssen Sie eine Modellbasisklasse erben, bevor Sie bestimmte Funktionen verwenden können.

Das Modell ist nicht in Zend gekapselt.

Der Grund liegt wahrscheinlich darin, dass sich das Modell hauptsächlich auf eine bestimmte Geschäftslogik bezieht und eine übermäßige Kapselung nur zur Verwirrung führt.

Zend nutzt die Autoload- und Namespace-Funktionen, um dieses Problem taktvoll zu lösen.

Erstellen Sie ein Zendframework-Projekt model_demo1

Um Fehler einfach anzuzeigen, können wir den Fehlermeldungsschalter in der Konfigurationsdatei /model_demo1/application/configs/application.ini wie folgt aktivieren:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
Nach dem Login kopieren

Als nächstes sprechen wir kurz über das Modell in Zend:

1. Standardmodell

Eine Standard-Webanwendung hat ein Verzeichnis wie Anwendung/Modelle. Es ist nicht schwer zu erkennen, dass Modelle zum Speichern des Modells

Ihrer App verwendet werden. Die Stärke dieses Verzeichnisses liegt darin, dass Sie eine bestimmte Klasse im Modellverzeichnis definieren. Zend lädt es automatisch für uns. Natürlich müssen wir bestimmte Konventionen befolgen. Die Prämisse lautet:

Verwenden Sie beispielsweise die ZF-Befehlszeile, um ein Modell mit dem Namen Test zu erstellen

zf create model Test
Nach dem Login kopieren

Erstellen ein Modell unter /www/model_demo1/application/models/Test.php

Projektprofil „/www/model_demo1/.zfproject.xml“ aktualisieren

Aktualisieren Sie das Projektverzeichnis und Sie können das sehen Die folgenden neuen Ergänzungen sind File/model_demo1/application/models/Test.php

Der Inhalt der Datei lautet wie folgt:

<?php
class Application_Model_Test
{}
Nach dem Login kopieren

Es ist nicht schwer zu erkennen, dass wir folgen müssen Befolgen Sie die folgenden Regeln für die Verwendung von Model:

1) .Beginnen Sie mit Application_Model_, gefolgt vom Klassennamen des benutzerdefinierten Modells.

Das heißt: Die Verzeichnisstruktur des Modells unserer Webanwendung ist /model_demo1/application/models/Test.php

Der entsprechende Namespace ist Application_Model_Test.

Anwendung entspricht Anwendung

Modelle entspricht Modellen

Test ist der Name der Klassendatei des Modells.

Der Name der Klasse richtet sich nach den Einschränkungen: class Application_Model_Test {

Es ist nicht schwer, Application_Model_ zu verstehen. Solche Regeln folgen den Autoload- und Namespace-Konventionen des Zend-Frameworks.

2).Application-Namespace

Tatsächlich ist Application auch der Namespace der Anwendung, die wir in der Konfigurationsdatei konfiguriert haben.

Wenn Sie den appnamespace = „Application“ der Konfigurationsdatei in appnamespace = „App“ ändern.

Unser Originalprogramm meldet einen Fehler. Der Grund liegt auf der Hand. Zend ist also nicht so schlau.

Wenn Sie das Prinzip im Detail untersuchen möchten, ist es wahrscheinlich die folgende Klasse, die diese Funktion vervollständigt:

Zend_Application_Bootstrap_Bootstrap
Zend_Application_Module_Autoloader
Nach dem Login kopieren


2. Definieren Sie den Namespace selbst

Zend ist der Standard-Namespace. Erstellen Sie beispielsweise die Klasse Zend_Test in /model_demo1/library/Zend/Test.php

<?php
class Zend_Test{
 static public function echoZendTest(){
  echo &#39;ZendTest<br/>&#39;;
 }
}
Nach dem Login kopieren

use. Zum Beispiel: Zend_Test::echoZendTest();

Hier sind zwei einfache Möglichkeiten, den Namespace anzupassen:


1). Verwenden Sie die Konfigurationsdatei application.ini

Standard-Namespace

Benutzerdefinierter Namespace

oder
appnamespace = "Application"
Nach dem Login kopieren

Die spezifische Implementierungsklasse ist: ZendApplication.php
autoloadernamespaces.app = "App_"
autoloadernamespaces.my = "MyApp_"
Nach dem Login kopieren

autoloadernamespaces[] = "App_"
autoloadernamespaces[] = "MyApp_"
Nach dem Login kopieren

public function setOptions(array $options)
{
 if (!empty($options[&#39;config&#39;])) {
  if (is_array($options[&#39;config&#39;])) {
   $_options = array();
   foreach ($options[&#39;config&#39;] as $tmp) {
    $_options = $this->mergeOptions($_options, $this->_loadConfig($tmp));
   }
   $options = $this->mergeOptions($_options, $options);
  } else {
   $options = $this->mergeOptions($this->_loadConfig($options[&#39;config&#39;]), $options);
  }
 }
 $this->_options = $options;
 $options = array_change_key_case($options, CASE_LOWER);
 $this->_optionKeys = array_keys($options);
 if (!empty($options[&#39;phpsettings&#39;])) {
  $this->setPhpSettings($options[&#39;phpsettings&#39;]);
 }
 if (!empty($options[&#39;includepaths&#39;])) {
  $this->setIncludePaths($options[&#39;includepaths&#39;]);
 }
 if (!empty($options[&#39;autoloadernamespaces&#39;])) {
  $this->setAutoloaderNamespaces($options[&#39;autoloadernamespaces&#39;]);
 }
Nach dem Login kopieren

2). In der Datei Bootstrap.php

zum Beispiel/model_demo1/application/Bootstrap.php

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
 protected function _initAutoload() {
  $app = $this->getApplication ();
  $namespaces = array (
    &#39;AppTest&#39;
  );
  $app->setAutoloaderNamespaces ( $namespaces );
  return $app;
 }
}
Nach dem Login kopieren

/model_demo1/library/AppTest/Test.php


/model_demo1/application/controllers/IndexController.php

3) . Verwenden Sie bestimmte Klassen, um das automatische Laden abzuschließen
<?php
class AppTest_Test{
 static public function echoAppTestTest(){
  echo &#39;AppTestTest<br/>&#39;;
 }
}
Nach dem Login kopieren

AppTest_Test::echoAppTestTest();
Nach dem Login kopieren

$auto_loader = Zend_Loader_Autoloader::getInstance();
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
  &#39;basePath&#39; => &#39;/www/model_demo1/application&#39;,
  &#39;namespace&#39; => &#39;&#39;,
  &#39;resourceTypes&#39; => array(
    &#39;model&#39; => array(
      &#39;path&#39; => &#39;models&#39;,
      &#39;namespace&#39; => &#39;Model&#39;
    )
  )
)
);
$auto_loader->pushAutoloader($resourceLoader);
$auto_loader->registerNamespace(array(&#39;AppTest2_&#39;));
AppTest2_Test::echoAppTest2Test();
Model_ModelTest::echoModelModelTest();
Nach dem Login kopieren

/model_demo1/application/models/ModelTest.php


/model_demo1/library/AppTest2/Test.php

Ich hoffe, dieser Artikel wird für alle hilfreich sein, die sich mit PHP-Programmierung befassen.
<?php
class Model_ModelTest{
 static function echoModelModelTest(){
  echo &#39;Model_ModelTest<br/>&#39;;
 }
}
Nach dem Login kopieren

Weitere Artikel zu den Grundregeln und der Verwendung des Modells im Zend Framework-Tutorial finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage