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

Zend Framework-Tutorial: Grundregeln und Verwendung des Modells

Jan 03, 2017 pm 01:47 PM

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)