ホームページ > バックエンド開発 > PHPチュートリアル > Zend Frameworkチュートリアル、zendframework_PHPチュートリアルのアプリケーション使用例を詳しく解説

Zend Frameworkチュートリアル、zendframework_PHPチュートリアルのアプリケーション使用例を詳しく解説

WBOY
リリース: 2016-07-12 08:57:11
オリジナル
1352 人が閲覧しました

Zend Frameworkチュートリアル、zendframeworkのアプリケーション使用例を詳しく解説

この記事では、Zend Frameworkチュートリアルのアプリケーション使用例を例を交えて解説しています。参考のために皆さんと共有してください。詳細は次のとおりです:

Zend_Application は Zend Framework のコアコンポーネントです。 Zend_Application は Zend Framework アプリケーションの基本機能を提供し、プログラムのエントリ ポイントです。その主な機能は、PHP 環境のロードと構成 (自動ロードを含む)、およびアプリケーションの起動の 2 つです。

通常、Zend_Application コンストラクターは構成オプションを使用して構成されますが、カスタム メソッドを使用して完全に構成することもできます。以下に 2 つの使用例を示します。

Zend_Application 構成オプション

コンストラクター:

リーリー

Zend_Applicationの設定方法

1.設定ファイルを使用する
2. 構成配列を使用します

一般的な構成オプション


注意:

オプション名では大文字と小文字が区別されません。

Zend_Application メソッド

オプション 説明
php設定

php.ini オプションの設定に使用されます。配列である必要があり、配列のキーがオプションのキーである必要があります。

パスを含む

追加のパスを include_path に追加します。これは配列である必要があります

オートローダー名前空間

追加の名前空間を配列として Zend_Loader_Autoloader に登録します

ブートストラップ

ブートストラップ クラスのパスを設定する文字列にすることも、配列にすることもできます。配列要素は 'path' と 'class' である必要があります。

setBootstrap($path, $class = null)Zend_Application
方法 戻り値 パラメータ 説明
__construct(
$環境、
$options = null)
ボイド
  • $環境: 必須。 現在のアプリケーション環境を表す文字列。

    一般的な文字列には、「development」、「testing」、「qa」、または「production」が含まれる場合がありますが、これらはすでに定義されている必要があります。

    設定ファイルの関連セクションに対応します。

  • $options: オプション。パラメータのタイプは:

    です。
    • String : $environment ファイルの構成パスを指定して、構成ファイルのどの章を指定するか指定します。 1.10 以降、複数の設定ファイルのパスを設定できるようになり、それらは 1 つの設定ファイルにマージされます。

      これはより柔軟で再利用が簡単です。

      この場合のキーは「config」で、その値はファイルパスの配列です。

      注: パス文字列、または array("config"=>array("/path1","/path2"[,...])); にすることができます。

    • 配列 : アプリケーションの連想配列を構成します

    • Zend_Config: 構成オブジェクトのインスタンス

コンストラクター。 構成オブジェクトを初期化するために使用されます。 Zend_Loader_Autoloader をインスタンス化します。

オプションをコンストラクターに渡してから setOptions() メソッドに渡すことによって。

getEnvironment() 文字列 該当なし

環境設定を取得する

getAutoloader() Zend_Loader_Autoloader 該当なし

Zend_Loader_Autoloader インスタンスを取得する

setOptions(array $options) Zend_Application
  • $options: 必須、配列である必要があります

すべてのオプションは参照内に保存され、オプションをマージするためにメソッドが複数回呼び出されます。

オプションに応じてsetterメソッドが生成されます。

たとえば、オプション「phpSettings」は setPhpSettings() に対応します。

(オプション名では大文字と小文字が区別されません。)

getOptions() 配列 該当なし


オプション($key)があります ブール
  • $key: 指定された設定が発行されたと判断します

キーでは大文字と小文字が区別されません。

getOption($key) 混合
  • $key: 指定された構成オプションの値を取得します

キーでは大文字と小文字が区別されません。存在しない場合は NULL

を返します
setPhpSettings(array $settings, $prefix = '') Zend_Application
  • $settings: 比較.PHP INIの構成連想配列.

  • $prefix: オプション オプションに接頭辞を追加します。


setAutoloaderNamespaces(array $namespaces) Zend_Application
  • $名前空間: 必須

    Zend_Loader_Autoloader インスタンス経由で登録された名前空間文字列の配列を渡します


  • $パス

    : 必須おそらく Zend_Application_Bootstrap_Bootstrapper インスタンス

    ブートストラップ クラスパス文字列、

    クラス名 => ファイル名、

    形式の連想配列

    または、キー「class」と値「path」を持つ連想配列。

  • $class: オプション$pathが文字列の場合、$classはクラス名です

getBootstrap() NULL |Zend_Application_Bootstrap_Bootstrapper 該当なし

登録されたブートストラップ インスタンスを取得します。

ブートストラップ() ボイド 該当なし

ブートストラップの bootstrap() を呼び出してアプリケーションをブートストラップします。

走る() ボイド 該当なし

ブートストラップの run() を呼び出してアプリケーションを実行します

配置举例:

默认:

// Create application, bootstrap, and run
$application = new Zend_Application(
  APPLICATION_ENV,
  APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
      ->run();

ログイン後にコピー

源代码

<&#63;php
class Zend_Application
{  /**
   * Constructor
   *
   * Initialize application. Potentially initializes include_paths, PHP
   * settings, and bootstrap class.
   *
   * @param string          $environment
   * @param string|array|Zend_Config $options String path to configuration file, or array/Zend_Config of configuration options
   * @throws Zend_Application_Exception When invalid options are provided
   * @return void
   */
  public function __construct($environment, $options = null)
  {
    $this->_environment = (string) $environment;
    require_once 'Zend/Loader/Autoloader.php';
    $this->_autoloader = Zend_Loader_Autoloader::getInstance();
    if (null !== $options) {
      if (is_string($options)) {
        $options = $this->_loadConfig($options);
      } elseif ($options instanceof Zend_Config) {
        $options = $options->toArray();
      } elseif (!is_array($options)) {
        throw new Zend_Application_Exception('Invalid options provided; must be location of config file, a config object, or an array');
      }
      $this->setOptions($options);
    }
  }
  /**
   * Retrieve current environment
   *
   * @return string
   */
  public function getEnvironment()
  {
    return $this->_environment;
  }
  /**
   * Retrieve autoloader instance
   *
   * @return Zend_Loader_Autoloader
   */
  public function getAutoloader()
  {
    return $this->_autoloader;
  }
  /**
   * Set application options
   *
   * @param array $options
   * @throws Zend_Application_Exception When no bootstrap path is provided
   * @throws Zend_Application_Exception When invalid bootstrap information are provided
   * @return Zend_Application
   */
  public function setOptions(array $options)
  {
    if (!empty($options['config'])) {
      if (is_array($options['config'])) {
        $_options = array();
        foreach ($options['config'] as $tmp) {
          $_options = $this->mergeOptions($_options, $this->_loadConfig($tmp));
        }
        $options = $this->mergeOptions($_options, $options);
      } else {
        $options = $this->mergeOptions($this->_loadConfig($options['config']), $options);
      }
    }
    $this->_options = $options;
    $options = array_change_key_case($options, CASE_LOWER);
    $this->_optionKeys = array_keys($options);
    if (!empty($options['phpsettings'])) {
      $this->setPhpSettings($options['phpsettings']);
    }
    if (!empty($options['includepaths'])) {
      $this->setIncludePaths($options['includepaths']);
    }
    if (!empty($options['autoloadernamespaces'])) {
      $this->setAutoloaderNamespaces($options['autoloadernamespaces']);
    }
    if (!empty($options['autoloaderzfpath'])) {
      $autoloader = $this->getAutoloader();
      if (method_exists($autoloader, 'setZfPath')) {
        $zfPath  = $options['autoloaderzfpath'];
        $zfVersion = !empty($options['autoloaderzfversion'])
              &#63; $options['autoloaderzfversion']
              : 'latest';
        $autoloader->setZfPath($zfPath, $zfVersion);
      }
    }
    if (!empty($options['bootstrap'])) {
      $bootstrap = $options['bootstrap'];
      if (is_string($bootstrap)) {
        $this->setBootstrap($bootstrap);
      } elseif (is_array($bootstrap)) {
        if (empty($bootstrap['path'])) {
          throw new Zend_Application_Exception('No bootstrap path provided');
        }
        $path = $bootstrap['path'];
        $class = null;
        if (!empty($bootstrap['class'])) {
          $class = $bootstrap['class'];
        }
        $this->setBootstrap($path, $class);
      } else {
        throw new Zend_Application_Exception('Invalid bootstrap information provided');
      }
    }
    return $this;
  }
  /**
   * Retrieve application options (for caching)
   *
   * @return array
   */
  public function getOptions()
  {
    return $this->_options;
  }
  /**
   * Is an option present&#63;
   *
   * @param string $key
   * @return bool
   */
  public function hasOption($key)
  {
    return in_array(strtolower($key), $this->_optionKeys);
  }
  /**
   * Retrieve a single option
   *
   * @param string $key
   * @return mixed
   */
  public function getOption($key)
  {
  }
  /**
   * Merge options recursively
   *
   * @param array $array1
   * @param mixed $array2
   * @return array
   */
  public function mergeOptions(array $array1, $array2 = null)
  {
    if (is_array($array2)) {
      foreach ($array2 as $key => $val) {
        if (is_array($array2[$key])) {
          $array1[$key] = (array_key_exists($key, $array1) && is_array($array1[$key]))
                 &#63; $this->mergeOptions($array1[$key], $array2[$key])
                 : $array2[$key];
        } else {
          $array1[$key] = $val;
        }
      }
    }
    return $array1;
  }
  /**
   * Set PHP configuration settings
   *
   * @param array $settings
   * @param string $prefix Key prefix to prepend to array values (used to map . separated INI values)
   * @return Zend_Application
   */
  public function setPhpSettings(array $settings, $prefix = '')
  {
    foreach ($settings as $key => $value) {
      $key = empty($prefix) &#63; $key : $prefix . $key;
      if (is_scalar($value)) {
        ini_set($key, $value);
      } elseif (is_array($value)) {
        $this->setPhpSettings($value, $key . '.');
      }
    }
    return $this;
  }
  /**
   * Set include path
   *
   * @param array $paths
   * @return Zend_Application
   */
  public function setIncludePaths(array $paths)
  {
    $path = implode(PATH_SEPARATOR, $paths);
    set_include_path($path . PATH_SEPARATOR . get_include_path());
    return $this;
  }
  /**
   * Set autoloader namespaces
   *
   * @param array $namespaces
   * @return Zend_Application
   */
  public function setAutoloaderNamespaces(array $namespaces)
  {
    $autoloader = $this->getAutoloader();
    foreach ($namespaces as $namespace) {
      $autoloader->registerNamespace($namespace);
    }
    return $this;
  }
  /**
   * Set bootstrap path/class
   *
   * @param string $path
   * @param string $class
   * @return Zend_Application
   */
  public function setBootstrap($path, $class = null)
  {
    // setOptions() can potentially send a null value; specify default
    // here
    if (null === $class) {
      $class = 'Bootstrap';
    }
    if (!class_exists($class, false)) {
      require_once $path;
      if (!class_exists($class, false)) {
        throw new Zend_Application_Exception('Bootstrap class not found');
      }
    }
    $this->_bootstrap = new $class($this);
    if (!$this->_bootstrap instanceof Zend_Application_Bootstrap_Bootstrapper) {
      throw new Zend_Application_Exception('Bootstrap class does not implement Zend_Application_Bootstrap_Bootstrapper');
    }
    return $this;
  }
  /**
   * Get bootstrap object
   *
   * @return Zend_Application_Bootstrap_BootstrapAbstract
   */
  public function getBootstrap()
  {
    if (null === $this->_bootstrap) {
      $this->_bootstrap = new Zend_Application_Bootstrap_Bootstrap($this);
    }
    return $this->_bootstrap;
  }
  /**
   * Bootstrap application
   *
   * @param null|string|array $resource
   * @return Zend_Application
   */
  public function bootstrap($resource = null)
  {
    $this->getBootstrap()->bootstrap($resource);
    return $this;
  }
  /**
   * Run the application
   *
   * @return void
   */
  public function run()
  {
    $this->getBootstrap()->run();
  }
  /**
   * Load configuration file of options
   *
   * @param string $file
   * @throws Zend_Application_Exception When invalid configuration file is provided
   * @return array
   */
  protected function _loadConfig($file)
  {
    $environment = $this->getEnvironment();
    $suffix   = pathinfo($file, PATHINFO_EXTENSION);
    $suffix   = ($suffix === 'dist')
           &#63; pathinfo(basename($file, ".$suffix"), PATHINFO_EXTENSION)
           : $suffix;
    switch (strtolower($suffix)) {
      case 'ini':
        $config = new Zend_Config_Ini($file, $environment);
        break;
      case 'xml':
        $config = new Zend_Config_Xml($file, $environment);
        break;
      case 'json':
        $config = new Zend_Config_Json($file, $environment);
        break;
      case 'yaml':
      case 'yml':
        $config = new Zend_Config_Yaml($file, $environment);
        break;
      case 'php':
      case 'inc':
        $config = include $file;
        if (!is_array($config)) {
          throw new Zend_Application_Exception('Invalid configuration file provided; PHP file does not return array value');
        }
        return $config;
        break;
      default:
        throw new Zend_Application_Exception('Invalid configuration file provided; unknown config type');
    }
    return $config->toArray();
  }
}

ログイン後にコピー

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • Zend Framework自定义Helper类相关注意事项总结
  • Zend Framework教程之Bootstrap类用法概述
  • Zend Framework教程之资源(Resources)用法实例详解
  • Zend Framework教程之Application和Bootstrap用法详解
  • Zend Framework教程之配置文件application.ini解析
  • Zend Framework教程之Loader以及PluginLoader用法详解
  • Zend Framework教程之Autoloading用法详解
  • Zend Framework教程之Resource Autoloading用法实例
  • Zend Framework教程之MVC框架的Controller用法分析
  • Zend Framework教程之路由功能Zend_Controller_Router详解
  • Zend Framework教程之Zend_Controller_Plugin插件用法详解
  • Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
  • Zend Framework教程之动作的基类Zend_Controller_Action详解
  • Zend Framework教程之前端控制器Zend_Controller_Front用法详解

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1110089.htmlTechArticleZend Framework教程之Application用法实例详解,zendframework 本文实例讲述了Zend Framework教程之Application用法。分享给大家供大家参考,具体如下:...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート