国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim php教程 PHP開發(fā) Ausführliche Erl?uterung der Anwendungs- und Bootstrap-Nutzung im Zend Framework-Tutorial

Ausführliche Erl?uterung der Anwendungs- und Bootstrap-Nutzung im Zend Framework-Tutorial

Dec 27, 2016 pm 02:36 PM

Die Beispiele in diesem Artikel beschreiben die Verwendung von Application und Bootstrap im Zend Framework-Tutorial. Geben Sie es wie folgt als Referenz an alle weiter:

In einer MVC-Anwendung müssen wir eine Datenbankverknüpfung initialisieren und einrichten, Ansichten und Ansichtsassistenten konfigurieren, das Layout konfigurieren, zugeh?rige Plug-Ins registrieren und Aktionsassistenten registrieren usw. Wir müssen die Konfigurations- und Vorbereitungsarbeiten einzeln abschlie?en. Manchmal sind m?glicherweise einige Initialisierungsvorg?nge erforderlich, in einigen F?llen sind diese Initialisierungen jedoch m?glicherweise nicht erforderlich. Zend_Application kann diese Vorg?nge nicht nur abschlie?en, sondern auch diese Konfigurations- und Initialisierungsaufgaben einheitlicher und geordneter gestalten und die Wiederverwendbarkeit erh?hen.

Die Verwendung von Zend_Application kann in drei Typen unterteilt werden:

Zend_Application: l?dt die PHP-Umgebung, einschlie?lich include_paths und automatischem Laden, und instanziiert die Boot-Klasse.

Zend_Application_Bootstrap: Stellt eine Schnittstelle für Boot-Klassen bereit.

Zend_Application_Bootstrap_Bootstrap vervollst?ndigt die h?ufigsten Funktionen, die der Bootvorgang bereitstellen muss, einschlie?lich Abh?ngigkeitsprüfung und Laden von Boot-Ressourcen bei Bedarf.

Zend_Application_Resource bietet eine On-Demand-Funktion zum Laden von Ressourcen

Entwickler k?nnen je nach Bedarf Zend_Application_Bootstrap_Bootstrap erben oder die Zend_Application_Bootstrap_Bootstrapper-Schnittstelle implementieren. Zend_Application wird in die Eintragsdatei (zum Beispiel public/index.php) geladen und entsprechend den Boot-Optionen und der aktuellen Umgebungskonfiguration instanziiert.

Die Boot-Optionen umfassen die angegebene Boot-Klassendatei und den Boot-Klassenpfad. Die Optionen lauten wie folgt:

Erforderliche include_paths

Die automatische Ladefunktion l?dt zus?tzlich den registrierten Namespace

php.ini-Initialisierungseinstellungen

Geben Sie den Bootstrap-Klassennamen an, wenn er nicht ?Bootstrap“ ist.

Das Pr?fix-Schlüssel-Wert-Paar der Ressource stellt den Ressourcenpr?fixnamen dar

Der Name oder Alias ??der Ressourcenklasse

Zus?tzlicher geladener Konfigurationsdateipfad

Zus?tzliche Konfigurationsoptionen

Die Option kann ein Array oder ein Zend_Config-Objekt oder ein sein Konfigurationsdatei an einem angegebenen Ort

Bootstrapper

Die zweite Funktion von Zend_Application besteht darin, die Anwendung zu führen. Die spezifische Schnittstellen-API lautet wie folgt:

interface Zend_Application_Bootstrap_Bootstrapper
{
  public function __construct($application);
  public function setOptions(array $options);
  public function getApplication();
  public function getEnvironment();
  public function getClassResources();
  public function getClassResourceNames();
  public function bootstrap($resource = null);
  public function run();
}

API stellt haupts?chlich die Umgebungskonfiguration bereit.

Sie k?nnen die Schnittstelle implementieren oder Zend_Application_Bootstrap_BootstrapAbstract oder Zend_Application_Bootstrap_Bootstrap erben.

Ressourcenmethode

Die Ressourcenmethode das die Zend_Application_Bootstrap_BootstrapAbstract-Schnittstelle implementiert, muss den folgenden Regeln folgen. Der Methodentyp muss mit _init beginnen.

Wenn Sie eine Ressourcenmethode laden und verwenden m?chten name in bootstrap(). Der Ressourcenname ist die Ressourcenmethode und entfernt das Pr?fix _init.

Wenn Sie mehrere Ressourcenmethoden laden m?chten, k?nnen Sie diese über ein Array angeben.

Zum Beispiel Bootstrap-Klasse:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initFoo()
  {
    // ...
  }
  protected function _initBar()
  {
    // ...
  }
  protected function _initBaz()
  {
    // ...
  }
}

Nur ??mit _initFoo() laden:

$bootstrap->bootstrap('foo');

Mit _initFoo() und _initBar() laden:

$bootstrap->bootstrap(array('foo', 'bar'));

Laden und verwenden Sie alle Ressourcenmethoden, verwenden Sie bootstrap() ohne Parameter:

$bootstrap->bootstrap();

Erstellen Sie ein neues first_web-Projekt

root@coder-671T-M:/mydev_src /zend_framework_learn /www# tree first_web/
first_web/
├── application
│ ├── Bootstrap.php
│ ├── configs
│ │ └── application.ini
│ ├── Controller
│ │ ├── ErrorController.php
│ │ └── IndexController.php
│ ├── Modelle
│ └──. Ansichten
│ ├ ── Helfer
│? └── Skripte
│? ├── Fehler
│? └── error.phtml
│??????????????? └──. index.phtml
├ ── Dokumente
│ └── README.txt
├── Bibliothek
├── ?ffentlich
│ └── index.php
└── Tests
├── Anwendung
│ └─ ─ Controller
│ └── IndexControllerTest.php
├── bootstrap.php
├── Bibliothek
└── phpunit.xml
16 ies, 11 Dateien

Neuere Versionen des Zend-Frameworks führen Zend_Application und Bootstrap ein. Zend_Application bietet einen Bootstrap aus wiederverwendbaren Ressourcen, generischen und modularen Bootstrap-Klassen und Abh?ngigkeitsprüfungen. Es ist au?erdem dafür verantwortlich, standardm??ig PHP-Umgebungsvariablen und automatische Ladefunktionen festzulegen.

Standardm??ig werden nach dem Erstellen eines neuen Projekts die folgenden Dateien bereitgestellt:

1. Bootstrap des Projekts

first_web/

├── application
│ ├── Bootstrap.php

Der spezifische Code lautet wie folgt:

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
2. Konfigurationsdatei

│ ├── configs
│ │ └── application.ini

具體代碼如下:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

3.項目入口文件

├── public
│ └── index.php

<?php
// Define path to application directory
defined(&#39;APPLICATION_PATH&#39;)
  || define(&#39;APPLICATION_PATH&#39;, realpath(dirname(__FILE__) . &#39;/../application&#39;));
// Define application environment
defined(&#39;APPLICATION_ENV&#39;)
  || define(&#39;APPLICATION_ENV&#39;, (getenv(&#39;APPLICATION_ENV&#39;) ? getenv(&#39;APPLICATION_ENV&#39;) : &#39;production&#39;));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
  realpath(APPLICATION_PATH . &#39;/../library&#39;),
  get_include_path(),
)));
/** Zend_Application */
require_once &#39;Zend/Application.php&#39;;
// Create application, bootstrap, and run
$application = new Zend_Application(
  APPLICATION_ENV,
  APPLICATION_PATH . &#39;/configs/application.ini&#39;
);
$application->bootstrap()
      ->run();

以上代碼就是基本的使用Zend_Application方式,完成了環(huán)境變量的初始化,加載配置文件,初始化環(huán)境,加載模塊,完成web應(yīng)用程序的引導(dǎo)功能。

資源插件

資源插件只需要實現(xiàn)Zend_Application_Resource_Resource,或者,更簡單的是,繼承Zend_Application_Resource_ResourceAbstract。接口如下:

interface Zend_Application_Resource_Resource
{
  public function __construct($options = null);
  public function setBootstrap(
    Zend_Application_Bootstrap_Bootstrapper $bootstrap
  );
  public function getBootstrap();
  public function setOptions(array $options);
  public function getOptions();
  public function init();
}

例如

class My_Resource_View extends Zend_Application_Resource_ResourceAbstract
{
  protected $_view;
  public function init()
  {
    // Return view so bootstrap will store it in the registry
    return $this->getView();
  }
  public function getView()
  {
    if (null === $this->_view) {
      $options = $this->getOptions();
      $title  = &#39;&#39;;
      if (array_key_exists(&#39;title&#39;, $options)) {
        $title = $options[&#39;title&#39;];
        unset($options[&#39;title&#39;]);
      }
      $view = new Zend_View($options);
      $view->doctype(&#39;XHTML1_STRICT&#39;);
      $view->headTitle($title);
      $view->headLink()->appendStylesheet(&#39;/css/site.css&#39;);
      $view->headScript()->appendfile(&#39;/js/analytics.js&#39;);
      $viewRenderer =
        Zend_Controller_Action_HelperBroker::getStaticHelper(
          &#39;ViewRenderer&#39;
        );
      $viewRenderer->setView($view);
      $this->_view = $view;
    }
    return $this->_view;
  }
}

加載使用資源插件

我了提供資源的重用性,可以將資源方法定義為資源插件。。

為了讓bootstrap能夠識別資源插件,定義資源插件時,需要實現(xiàn)Zend_Application_Bootstrap_ResourceBootstrapper. 接口定義了查找插件,注冊插件和加載插件的api:

interface Zend_Application_Bootstrap_ResourceBootstrapper
{
  public function registerPluginResource($resource, $options = null);
  public function unregisterPluginResource($resource);
  public function hasPluginResource($resource);
  public function getPluginResource($resource);
  public function getPluginResources();
  public function getPluginResourceNames();
  public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader);
  public function getPluginLoader();
}

采用資源插件,不僅可以讓資源可以重復(fù)利用,同時讓bootstrap更簡潔,如果要修改,新增資源也無需修改你的bootstrap。

通過實現(xiàn)Zend_Application_Bootstrap_BootstrapAbstract (被 Zend_Application_Bootstrap_Bootstrap 繼承) ,才可以使用定義的資源插件

通過將指定的選項傳遞到application object and/or bootstrap,來注冊使用資源插件。這些選項可能會從一個配置文件,或通過手動指定。規(guī)則是選項必須是鍵值對,鍵代表資源名稱。資源名稱,是資源插件類的類前綴。例如,Zend框架自帶的資源類前綴“Zend_Application_Resource_”;任何以下,這都是資源的名稱。例如,

$application = new Zend_Application(APPLICATION_ENV, array(
  &#39;resources&#39; => array(
    &#39;FrontController&#39; => array(
      &#39;controllerDirectory&#39; => APPLICATION_PATH . &#39;/controllers&#39;,
    ),
  ),
));

"FrontController"資源是個特例。他的選項比較特殊。

無論是使用自己的寫的資源插件還是使用第三方的資源插件。你必須保證bootstrap能找到他們,bootstrap 內(nèi)部通過 Zend_Loader_PluginLoader可以讓我們只需要指定資源插件的類前綴,值為資源類的類路徑便可以輕松注冊資源插件。

例如,如果編寫的資源插件存放在APPLICATION_PATH/resources/ 下,類前綴為My_Resource. 可以使用如下方法注冊加載:

$application = new Zend_Application(APPLICATION_ENV, array(
  &#39;pluginPaths&#39; => array(
    &#39;My_Resource&#39; => APPLICATION_PATH . &#39;/resources/&#39;,
  ),
  &#39;resources&#39; => array(
    &#39;FrontController&#39; => array(
      &#39;controllerDirectory&#39; => APPLICATION_PATH . &#39;/controllers&#39;,
    ),
  ),
));

在應(yīng)用程序中比可以使用指定目錄下的資源。

和資源方法類似,通過使用 the bootstrap() 方法可以加載資源插件。加載單一,多個,全部的資源插件的配置方式也類似.

例如:

// Execute one:
$bootstrap->bootstrap('FrontController');
// Execute several:
$bootstrap->bootstrap(array('FrontController', 'Foo'));
// Execute all resource methods and plugins:
$bootstrap->bootstrap();

資源注冊表

為了避免資源的重復(fù)注冊,導(dǎo)致不必要的浪費Zend_Application_Bootstrap_BootstrapAbstract 提供了一個本地注冊表對象存儲這些資源對象.當(dāng)你想要存放一個資源的時候,只需要在方法中返回這個資源即可。

為了靈活性,注冊表是作為一個內(nèi)部“容器”存在的。只要是對象都可以存入到容器中。資源名稱對應(yīng)為容器的屬性。默認(rèn)情況下,可以通過Zend_Registry獲取實例使用,也可以自定義其他對象。 setContainer() and getContainer() 方法可用于操縱容器本身。getResource($resource) 可用于獲取一個指定資源。hasResource($resource) 可以檢查資源是否已經(jīng)注冊存在

例如,注冊一個view資源:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initView()
  {
    $view = new Zend_View();
    // more initialization...
    return $view;
  }
}

資源的相關(guān)操作:

// Using the has/getResource() pair:
if ($bootstrap->hasResource(&#39;view&#39;)) {
  $view = $bootstrap->getResource(&#39;view&#39;);
}
// Via the container:
$container = $bootstrap->getContainer();
if (isset($container->view)) {
  $view = $container->view;
}

請注意:注冊表容器是不是全局的。這意味著你需要通過訪問的bootstrap來獲取資源。 Zend_Application_Bootstrap_Bootstrap提供了 run() , 執(zhí)行了 run() 之后,它會注冊為前端控制器參數(shù)的“bootstrap”,通過他可以獲取路由器,分發(fā)器,插件和動作控制器。

具體使用方法:

class FooController extends Zend_Controller_Action
{
  public function init()
  {
    $bootstrap = $this->getInvokeArg(&#39;bootstrap&#39;);
    $view = $bootstrap->getResource(&#39;view&#39;);
    // ...
  }
}

為了防止重復(fù)注冊加載資源方法和插件或一些資源可能依賴于其他資源。為了解決這兩個問題,Zend_Application_Bootstrap_BootstrapAbstract提供了一個簡單的依賴性跟蹤機制。

如前所述,所有的資源 - 無論是方法或插件 - 是通過 bootstrap($resource)加載運行的,其中 $resource是資源的名稱,或者資源名稱數(shù)組,或者為空,為空表示加載運行所有資源。

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initRequest()
  {
    // Ensure the front controller is initialized
    $this->bootstrap(&#39;FrontController&#39;);
    // Retrieve the front controller from the bootstrap registry
    $front = $this->getResource(&#39;FrontController&#39;);
    $request = new Zend_Controller_Request_Http();
    $request->setBaseUrl(&#39;/foo&#39;);
    $front->setRequest($request);
    // Ensure the request is stored in the bootstrap registry
    return $request;
  }
}

希望本文所述對大家PHP程序設(shè)計有所幫助。

更多Zend Framework教程之Application和Bootstrap用法詳解相關(guān)文章請關(guān)注PHP中文網(wǎng)!

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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Hei?e Themen

PHP-Tutorial
1502
276