练习用zf+smarty开发web项目。今天是第一颗。
再次应该对zf的一些常用对象有所了解,还有smarty。
一、首先构建环境
二、然后构建项目框架
三、建立配置文件
config.ini
[general]
db.adapter=PDO_MYSQL
db.config.host=localhost
db.config.username=root
db.config.password=123456
db.config.dbname=NetVideo
[smarty]
left_delimiter="<{"
right_delimiter="}>"
caching=0
[Format]
dateFormat=Y-m-d H:i:s
[cache]
cache.frontend.lifetime=15
cache.frontend.name=Core
cache.backend.name=File
cache.backend.cache_dir=D:/php/www/cache/
cache.frontend.automatic_serialization=true
resource.ini
[default]
index = default:index
IndexController.php
<?php
require_once 'Zend/Session/Namespace.php';
class IndexController extends Zend_Controller_Action
{
public function init()
{
$this->smarty=Zend_Registry::get('smarty');
$this->config=Zend_Registry::get('config');
$this->smarty->assign('baseUrl',$this->_request->getBaseUrl());
}
public function indexAction()
{
echo "中国您好!";
$this->smarty->display('header.phtml');
$this->smarty->display('index/index.phtml');
$this->smarty->display('footer.phtml');
}
}
模板文件略。
项目入口文件
index.php
<?php
@header('Content-type:text/html;charset=UTF-8');
//session_cache_limiter('private, must-revalidate');
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Asia/Shanghai');
define('ROOT_DIR', dirname(dirname(__FILE__))); //D:/php/www
define('WEB_ROOT', 'http://localhost:8080/blog/');
define('CACHE_DIR', 'D:/php/www/blog/cache/');
define('TABLE_PRE','oophp_');
set_include_path('.'.PATH_SEPARATOR.'./library'.PATH_SEPARATOR.'./application/models/'.PATH_SEPARATOR.get_include_path());
//Register the autoloader(设置Zend Framework 自动载入类文件)
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
Zend_Session::start();
//配置数据库参数,并连接数据库
$config=new Zend_Config_Ini('./application/config/config.ini',null, true);
Zend_Registry::set('config',$config);
$dbAdapter=Zend_Db::factory($config->general->db->adapter,$config->general->db->config->toArray());
$dbAdapter->query('SET NAMES UTF8');
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('dbAdapter',$dbAdapter);
//config smarty
//$smartyParams=new Zend_Config_Ini('./application/config/config.ini','smarty');
$smarty=new Custom_View_Smarty($config->smarty->toarray());
Zend_Registry::set('smarty',$smarty);
//zend cache
require_once 'Zend/Cache.php';
/*建立cache对象*/
$frontendOptions = $config->cache->cache->frontend->toArray();
$backendOptions = $config->cache->cache->backend->toArray();
$frontendName = $frontendOptions['name'];
unset($frontendOptions['name']);
$backendName = $backendOptions['name'];
unset($backendOptions['name']);
if (empty($backendOptions['cache_dir']))
{
$backendOptions['cache_dir'] = CACHE_DIR;
}
$cache = Zend_Cache::factory($frontendName, $backendName, $frontendOptions, $backendOptions);
Zend_Registry::set('cache',$cache);
/*
$view = new Zend_View();
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')
->setView($view);*/
//create auth object
$auth=Zend_Auth::getInstance();
//create acl object
$acl=new Custom_KenAcl();
$frontController = Zend_Controller_Front::getInstance();
$frontController->addModuleDirectory('./application/modules')
//->setRouter($router)
->registerPlugin(new Custom_Controller_Plugin_Smarty())
->setBaseUrl('/blog')
->setParam('useDefaultControllerAlways', true)
->setParam('noViewRenderer', true)
->setParam('noErrorHandler', true)
->setParam('useDefaultControllerAlways', true)
->registerPlugin(new Custom_Controller_Plugin_KenAuth($auth, $acl));
//Zend_Debug::dump($frontController->getParams(), $label=null, $echo=true);
$frontController->throwExceptions(true);
$frontController->dispatch();
ok,项目可以显示了。
然后就可以做更多的练习。