Zend Framework教程之Application用法实例详解

前端之家收集整理的这篇文章主要介绍了Zend Framework教程之Application用法实例详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了Zend Framework教程之Application用法分享给大家供大家参考,具体如下:

Zend_Application是Zend Framework的核心组件。Zend_Application为Zend Framework应用程序提供基本功能,是程序的入口点。它的主要功能有两个:装载配置PHP环境(包括自动加载),并引导应用程序。

通常情况下,通过配置选项配置Zend_Application构造器,但也可以完全使用自定义方法配置。以下是两个使用用例。

Zend_Application配置选项

构造函数

_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.使用配置数组

常见配置选项

PHPSettingsPHP.ini选项,要求是数组,数组的键应该是选项的的key.

注册附加命名空间,为数组

注意:

选项名称不区分大小写。

方法

:必填。 表示当前应用环境的String。

包括 "development","testing","qa",or "production",他们必须已经被定义。

配置文件文件中相关章节。

  • :可选的,参数类型可能是:

      文件的配置路径.用于指定配置文件的哪一个章节

      配置文件路径,然后会被合并成一个单一的配置文件

      文件路径数组。

      array("/path1","/path2"[,...]));.

  • 函数。 用于初始化配置对象。 实例化Zend_Loader_Autoloader。

    函数选项然后传递给setOptions()方法

    获取环境配置

    获取Zend_Loader_Autoloader实例

    :必填,要求是数组

    调用该方法来合并选项。

    方法。

    PHPSettings”对应setPHPSettings()。

    名称不区分大小写。)

    : 判断是发有指定的配置

    : 获取指定的配置选项的值

    PHPSettings(array $settings,$prefix = ''):比填..

  • :可选. 为选项添加前缀

  • :必填.

    Zend_Loader_Autoloader实例注册

    :必填.

    filename的关联数组,

  • :可选. 如果是字符串,

  • |

    默认:

    bootstrap() ->run();

    源代码

    _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,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(); } }

    更多关于zend相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《

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

    猜你在找的PHP相关文章