著作權聲明:原創作品,允許轉載,轉載時請務必以超連結形式標明文章原始出版、作者資訊和本聲明。否則將追究法律責任。http://blog.csdn.net/mayongzhan - 馬永占,myz,mayongzhan
根據網上流行的index配置,總結而成.
實際應用當中,有很多問題.例如多模板.多資料庫.共用zend,smarty,fckeditor等等之類的庫.
加入緩衝,異常處理,日誌記錄,許可權管理.
我感覺zendframe太全了.有點過分了. 在這個index中我使用的只是controller,用來控制項目的結構.所以可以適當的為zf減減肥.把沒用的類刪掉.別忘了看一下zf的檔案依賴.別刪錯了..
Zf在index載入了大量的東西,如果不是每個控制都使用的話,最好還是不在index載入比較好.zf太浪費資源了.
這個index當然只是zf一個項目的入口,還有很多的結構和代碼都沒有給出,如有需要請見http://blog.csdn.net/mayongzhan/中其他文章.
正題:
<?php
/**
* @name index.php
* @date Wed May 07 10:41:12 CST 2008
* @copyright 馬永占(MyZ)
* @author 馬永占(MyZ)
* @link http://blog.csdn.net/mayongzhan/
*/
header("Content-type: text/html;charset=utf-8");
session_start();
define('CONFIG_INI', 'conf/config.ini');
define('CONTROLLER_DIR', 'app/controller/');
define('LOG_DIR', 'log/');
define('TMP_DIR', 'tmp/');
define('WWW_DIR', 'www/');
define('LIB_DIR', 'lib/');
define('OTHER_CLASS_DIR', 'lib/class/');
define('OTHER_FUNC_DIR', 'lib/func/');
define('ZEND_DIR', 'lib/Zend/');
define('SMARTY_DIR', 'lib/Smarty/');
define('FCKEDITOR_DIR', 'lib/FCKeditor/');
define('MODELS_DIR', 'app/model/');
//Notice: PATH_SEPARATOR = win ; *nix :
set_include_path(get_include_path() . PATH_SEPARATOR .
LIB_DIR . PATH_SEPARATOR .
OTHER_CLASS_DIR . PATH_SEPARATOR .
OTHER_FUNC_DIR . PATH_SEPARATOR .
ZEND_DIR . PATH_SEPARATOR .
SMARTY_DIR . PATH_SEPARATOR .
FCKEDITOR_DIR . PATH_SEPARATOR .
MODELS_DIR);
//OFF error_report
//error_reporting(0);
//ON error_report
error_reporting(E_ALL);
//設定逾時
set_time_limit(0);
//設定時區
date_default_timezone_set('Asia/Shanghai');
//date_default_timezone_set('UTC');
//載入類檔案
require_once('Loader.php');
require_once('Smarty.class.php');
//當載入一個未聲明的類或未找到該類時,自動載入以下這個類
//Zend_Loader::registerAutoload();
//載入類
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Controller_Front');
//載入配置
if (file_exists(CONFIG_INI)) {
$config = parse_ini_file(CONFIG_INI, true);
}
else {
die('can/'t read config.ini');
}
//DB配置
$params = array ('host' => $config['DB']['host'],
'username' => $config['DB']['uname'],
'password' => $config['DB']['upassword'],
'dbname' => $config['DB']['name'],
'port' => $config['DB']['port']);
$db = Zend_Db::factory($config['DB']['type'], $params);
//如果MySQL資料庫版本小於4.1,注釋下行
$db->query("SET NAMES ".$config['DB']['charset']);
//註冊db
Zend_Registry::set('db', $db);
//Smarty配置
$smarty = new Smarty();
$smarty->compile_dir = $config['Smarty']['compile_dir'];
$smarty->cache_dir = $config['Smarty']['cache_dir'];
$smarty->template_dir = $config['Smarty']['template_dir'];
$smarty->left_delimiter = $config['Smarty']['left_delimiter'];
$smarty->right_delimiter = $config['Smarty']['right_delimiter'];
$smarty->caching = $config['Smarty']['caching'];
Zend_Registry::set('smarty', $smarty);
//註冊其他配置
Zend_Registry::set('LOG_DIR', LOG_DIR);
Zend_Registry::set('TMP_DIR', TMP_DIR);
Zend_Registry::set('WWW_DIR', WWW_DIR);
//前端控制
$front = Zend_Controller_Front::getInstance();
//ErrorHandler plugin:
$front->setParam('noErrorHandler', true);
//ViewRenderer helper:
$front->setParam('noViewRenderer', true);
//無法找到controller時使用預設的
$front->setParam('useDefaultControllerAlways',true);
//拋出異常
$front->throwExceptions(true);
//設定控制層目錄
$front->setControllerDirectory(CONTROLLER_DIR);
//執行
$front->dispatch();