Heim >php教程 >PHP开发 >Beispiel für die Verwendung des automatischen Ladens von Ressourcen im Zend Framework-Tutorial

Beispiel für die Verwendung des automatischen Ladens von Ressourcen im Zend Framework-Tutorial

高洛峰
高洛峰Original
2017-01-03 12:57:401252Durchsuche

Das Beispiel in diesem Artikel beschreibt die Verwendung von Resource Autoloading im Zend Framework. Geben Sie es als Referenz an alle weiter. Die Details lauten wie folgt:

Normalerweise wird bei der Entwicklung von Anwendungen der Klassendateiname möglicherweise nicht gemäß den Standardempfehlungen von Zend Framework definiert, was bedeutet, dass Ihre Klassendatei dies nicht tun kann automatisch vom Loader Discover geladen. Zend_Loader_Autoloader_Resource bietet die Lösung.

Eine Ressource ist lediglich ein Name, der dem Namespace (an den Autoloader angehängter Namespace) und dem Pfad (relativ zum Basispfad des Autoloaders) entspricht:

$loader = new Zend_Application_Module_Autoloader(array(
  'namespace' => 'Blog',
  'basePath' => APPLICATION_PATH . '/modules/blog',
));

Das konkrete Beispiel lautet wie folgt:

Pfad/zu/einigen/Ressourcen/
|--formen/
| `-- Guestbook.php // Foo_Form_Guestbook
|-- DbTable/
| >|. `-- GuestbookMapper.php // Foo_Model_GuestbookMapper

Ressourcenlader erstellen:

$loader = new Zend_Loader_Autoloader_Resource(array(
  'basePath' => 'path/to/some/resources/',
  'namespace' => 'Foo',
));

Ressourcentyp definieren

Zend_Loader_Autoloader_Resourse::addResourceType() hat drei Parameter: Ressourcenname, relativer Ressourcenpfadname des angegebenen Ressourcenpfads und Ressourcentyp-Komponentenpräfix.

Im obigen Baum haben wir drei Ressourcentypen: Formular (im Unterverzeichnis „Forms“ lautet das Ressourcenpräfix „Form“), Modell (im Unterverzeichnis „Models“ lautet das Ressourcenpräfix „Model“) und dbtable (im Unterverzeichnis models lautet das Ressourcenpräfix Model) Im Verzeichnis „models/DbTable“ lautet das Ressourcenpräfix „Model_DbTable“).

ist konkret wie folgt definiert:

$loader->addResourceType('form', 'forms', 'Form')
    ->addResourceType('model', 'models', 'Model')
    ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');

kann auch im Konstruktor

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
  'basePath'   => 'path/to/some/directory',
  'namespace'   => 'My',
  'resourceTypes' => array(
    'acl' => array(
      'path'   => 'acls/',
      'namespace' => 'Acl',
    ),
    'form' => array(
      'path'   => 'forms/',
      'namespace' => 'Form',
    ),
    'model' => array(
      'path'   => 'models/',
      'namespace' => 'Model',
    ),
  ),
));

Zum Definieren von Ressourcen verwenden

$form   = new Foo_Form_Guestbook();
$guestbook = new Foo_Model_Guestbook();

Ressourcen in Modulen werden automatisch geladen

Zend Framework's MVC Die Verwendung von „Modulen“ wird empfohlen. Module verfügen normalerweise standardmäßig über ein Standardverzeichnislayout. In diesem Paradigma sind Ressourcen-Autoloader sehr nützlich und standardmäßig aktiviert.

Grundlegende Verzeichnisstruktur des Moduls:

d2397dd86d29a9a1cff681f5f46c559c

configs/

    application.ini

  controllers/

      helpers/
  forms/
Layouts/
          . Filter/
                                                                                                                                                                  > Scripts/
Bootstrap.php

Sie können Zend_Application_Module_Bootstrap erweitern, um eine Modul-Boot-Klasse Bootstrap.php zu erstellen. Das spezifische Laden von Ressourcen ist ähnlich zum Standard-Ressourcenladen.

Ich hoffe, dass dieser Artikel für alle hilfreich ist, die sich mit PHP-Programmierung befassen.

Weitere Artikel zu den Anwendungsbeispielen für das automatische Laden von Ressourcen im Zend Framework-Tutorial finden Sie auf der chinesischen PHP-Website!

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