多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php框架 > ZendFramework > Zend Framework教程-Application

Zend Framework教程-Application

來源:程序員人生   發(fā)布時間:2014-04-03 04:16:18 閱讀次數:3878次

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

    通常情況下,通過配置選項配置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'


注意:
選項名稱不區(qū)分大小寫。 


Zend_Application的方法

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

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

    對應于配置文件文件中相關章節(jié)。

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

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

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

      這樣更靈活,便于重用。

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

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

    • Array : 配置應用的關聯(lián)數組

    • Zend_Config:配置對象的實例

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

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

getEnvironment()StringN/A

獲取環(huán)境配置

getAutoloader()Zend_Loader_AutoloaderN/A

獲取Zend_Loader_Autoloader實例

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

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

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

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

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

getOptions()ArrayN/A


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

key不區(qū)分大小寫。

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

key不區(qū)分大小寫。如果不存在返回 NULL

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

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


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

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


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

    可能是Zend_Application_Bootstrap_Bootstrapper實例,

    自舉類路徑字符串, 

    格式為classname => filename的關聯(lián)數組,

    或key為“class”和value為“path”的關聯(lián)數組。

  • $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();



源代碼

<?phpclass 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();    }}

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产xx在线观看 | 亚洲精品久久久久久久久久ty | 国产福利资源在线 | 欧美真人视频一级毛片 | 日韩色网| 噜噜片| 国产福利视频一区二区三区四区 | 久久精品一区二区三区中文字幕 | 亚洲国产精品综合欧美 | 欧美freesex8一10 | uuzyz噜噜资源站 | 亚洲国产精品a一区二区三区 | 亚洲国产精品二区久久 | 国产精品欧美一区二区三区不卡 | www.av片| 亚洲精品高清在线观看 | 玖玖视频精品 | 伊人网在线播放 | 成人99国产精品一级毛片 | 亚洲视频网址 | 嗯啊在线观看免费影院 | 在线 | 一区二区三区四区 | 三级做爰大爽长视频在线观看 | 尤物视频在线观看网站 | 欧美国产精品一区二区免费 | 爱色aⅴ | 亚洲成人一区在线 | 一级做a爰片久久毛片潮喷 一级做a爰片久久毛片看看 | 国产精品深夜福利免费观看 | 中文字幕免费高清视频 | 欧美亚洲精品在线 | 欧美毛片免费观看 | 中文字幕第二一区 | 亚洲国产精品第一区二区三区 | 日本福利片午夜免费观着 | 国产一区免费在线观看 | 激情视频网 | 亚洲欧美日韩精品久久亚洲区 | 性欧美性另类双性人互交 | 亚洲欧美日韩在线精品一区二区 | 国产精品自拍亚洲 |