91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Application如何在Zend Framework中使用

發布時間:2021-04-02 16:22:46 來源:億速云 閱讀:135 作者:Leah 欄目:開發技術

Application如何在Zend Framework中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

Zend_Application是Zend Framework的核心組件。Zend_Application為Zend Framework應用程序提供基本功能,是程序的入口點。它的主要功能有兩個:裝載配置PHP環境(包括自動加載),并引導應用程序。

通常情況下,通過配置選項配置Zend_Application構造器,但也可以完全使用自定義方法配置。以下是兩個使用用例。

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);
  }
}

Zend_Application配置方法

1.使用配置文件
2.使用配置數組

常見配置選項

OptionDescription
phpSettings

用于配置php.ini選項,要求是數組,數組的鍵應該是選項的的key.

includePaths

把附加的路徑加入到include_path,要求是數組

autoloaderNamespaces

給Zend_Loader_Autoloader注冊附加命名空間,為數組

bootstrap

可以是設置bootstrap引導類的路徑的字符串,也可以是數組,數組元素要求為 'path' 和 'class'

注意:

選項名稱不區分大小寫。

Zend_Application的方法

MethodReturn ValueParametersDescription
__construct(
 $environment, 
 $options = null)
Void
  • $environment: 必填。 表示當前應用環境的String。

    典型的字符串可能包括 "development", "testing", "qa", or "production",他們必須已經被定義。

    對應于配置文件文件中相關章節。

  • $options可選的,參數類型可能是:

    • String :  指定Zend_Config 文件的配置路徑. $environment 用于指定配置文件的哪一個章節

      從1.10開始,可以設置多個配置文件路徑,然后會被合并成一個單一的配置文件。

      這樣更靈活,便于重用。

      在這種情況下的key是"config",其值是文件路徑數組。

      注:可以是路徑字符串,或 array("config"=>array("/path2","/path3"[,...]));.

    • Array : 配置應用的關聯數組

    • Zend_Config:配置對象的實例

構造函數。 用于初始化配置對象。   實例化Zend_Loader_Autoloader。

通過傳遞給構造函數選項然后傳遞給setOptions()方法。

getEnvironment()StringN/A

獲取環境配置

getAutoloader()Zend_Loader_AutoloaderN/A

獲取Zend_Loader_Autoloader實例

setOptions(array $options)Zend_Application
  • $options必填,要求是數組

所有選項都存儲在引用內部,并多次調用該方法來合并選項。

會根據選項生產對于的setter方法。 

例如,選項“phpSettings”對應setPhpSettings()。 

(選項名稱不區分大小寫。)

getOptions()ArrayN/A


 

hasOption($key)Boolean
  • $key: 判斷是發有指定的配置

key不區分大小寫。

getOption($key)Mixed
  • $key: 獲取指定的配置選項的值

key不區分大小寫。如果不存在返回 NULL

setPhpSettings(array $settings, $prefix = '')Zend_Application
  • $settings比填.PHP INI 的配置關聯數組.

  • $prefix可選. 為選項添加前綴


 

setAutoloaderNamespaces(array $namespaces)Zend_Application
  • $namespaces必填

    傳遞命名空間字符串數組,通過Zend_Loader_Autoloader實例注冊


 

setBootstrap($path, $class = null)Zend_Application
  • $path必填

    可能是Zend_Application_Bootstrap_Bootstrapper實例,

    自舉類路徑字符串, 

    格式為classname => filename的關聯數組,

    或key為“class”和value為“path”的關聯數組。

  • $class可選. 如果 $path 是字符串, $class 類名稱


getBootstrap()NULL |Zend_Application_Bootstrap_BootstrapperN/A

獲取注冊的bootstrap實例.

bootstrap()VoidN/A

調用 bootstrap的bootstrap() 引導應用.

run()VoidN/A

調用bootstrap的 run()運行應用

配置舉例:

默認:

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

源代碼

<?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'])
              ? $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?
   *
   * @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]))
                 ? $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) ? $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')
           ? 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();
  }
}

看完上述內容,你們掌握Application如何在Zend Framework中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昆明市| 开远市| 桂阳县| 鄄城县| 大新县| 水城县| 周口市| 永丰县| 长治市| 米泉市| 阳新县| 大同市| 广东省| 乌鲁木齐县| 浏阳市| 浑源县| 定陶县| 靖西县| 广西| 文水县| 连平县| 富源县| 伊金霍洛旗| 安岳县| 昌宁县| 赣榆县| 大悟县| 进贤县| 龙川县| 达州市| 平度市| 蒙阴县| 江源县| 宿松县| 视频| 台东市| 钟山县| 依兰县| 高陵县| 重庆市| 青阳县|