Методика обучения технологии web 2.0 на примере создания школьного сайта спортивной тематикиРефераты >> Педагогика >> Методика обучения технологии web 2.0 на примере создания школьного сайта спортивной тематики
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
Листинг 1.2 Обработка пользовательских запросов методами класса Zend-Controller(файл index.php)
<?php
require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory($config->paths->base .
'/include/Controllers');
$controller->dispatch();
?>
Листинг 1.3 Контроллер index, используемый на главной странице веб-приложения (файл IndexController.php)
<?php
require_once('CustomControllerAction.php');
class IndexController extends CustomControllerAction
{
public function indexAction()
{
Echo’Будущий школьный сайт’;
}
}
?>
Листинг 1.4 Начальные настройки приложения (файл settings.ini)
[development]
database.type = pdo_mysql
database.hostname = localhost
database.username = phpweb20
database.password = myPassword
database.database = phpweb20
paths.base = /var/www/phpweb20
paths.data = /var/www/phpweb20/data
paths.templates = /var/www/phpweb20/templates
logging.file = /var/www/phpweb20/data/logs/debug.log
Листинг 1.5 Загрузка рабочих настроек приложения с использованием класса Zend_Config_Ini(файл index.php)
$config = new Zend_Config_Ini(' /settings.ini', 'development');
Zend_Registry::set('config', $config);
$controller->setControllerDirectory($config->paths->base .
'/include/Controllers');
Листинг 1.6 Расширение Smarty для использования в веб-приложении
(файл Templater.php)
<?php
class Templater extends Zend_View_Abstract
{
protected $_path;
protected $_engine;
public function construct()
{
$config = Zend_Registry::get('config');
require_once('Smarty/Smarty.class.php');
$this->_engine = new Smarty();
$this->_engine->template_dir = $config->paths->templates;
$this->_engine->compile_dir = sprintf('%s/tmp/templates_c',
$config->paths->data);
$this->_engine->plugins_dir = array($config->paths->base .
'/include/Templater/plugins',
'plugins');
}
public function getEngine()
{
return $this->_engine;
}
public function set($key, $val)
{
$this->_engine->assign($key, $val);
}
public function get($key)
{
return $this->_engine->get_template_vars($key);
}
public function isset($key)
{
return $this->_engine->get_template_vars($key) !== null;
}
public function unset($key)
{
$this->_engine->clear_assign($key);
}
public function assign($spec, $value = null)
{
if (is_array($spec)) {
$this->_engine->assign($spec);
return;
}
$this->_engine->assign($spec, $value);
}
public function clearVars()
{
$this->_engine->clear_all_assign();
}
public function render($name)
{
return $this->_engine->fetch(strtolower($name));
}
public function _run()
{ }
}
?>
Листинг 1.7 Новыйконтроллер, выводящийфайл index.tpl
(файл IndexController.php)
<?
class IndexController extends CustomControllerAction
{
public function indexAction()
{
}
}
?>
Листинг 1.8 Шаблондляоперации index контроллера index
(файл index.tpl)
{include file='header.tpl'}
Будущий спортивный сайт школы
{include file='footer.tpl'}
Листинг 1.9 ФайлзаголовкаHTML-страницы
(файл header.tpl)
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251 " />
</head>
<body>
<div>
Листинг 1.10 Файл конца страницы, в котором закрываются тэги, открытые в заголовке(файл footer.tpl)
</div>
</body>
</html>
Листинг 2.1 Загрузочный файл приложения с использованием компонента Zend_Auth(файл index.php)
// настройка утентификации пользователей
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session());
$controller->registerPlugin(new CustomControllerAclManager($auth));
Листинг 2.2 Подключаемый модуль CustomControllerAclManager, проверяющий допуски перед отправкой запроса на обработку
(файл CustomControllerAclManager.php)
<?php
class CustomControllerAclManager extends Zend_Controller_Plugin_Abstract
{
// роль по умолчанию, если не вошел (или роль не определена)
private $_defaultRole = 'guest';
// выполнить операцию, если у пользователя не хватает привилегий
private $_authController = array('controller' => 'account',
'action' => 'login');
public function construct(Zend_Auth $auth)
{
$this->auth = $auth;
$this->acl = new Zend_Acl();
// добаляем новые роли
$this->acl->addRole(new Zend_Acl_Role($this->_defaultRole));
$this->acl->addRole(new Zend_Acl_Role('member'));
$this->acl->addRole(new Zend_Acl_Role('administrator'), 'member');
// добавляем контролируемые ресурсы
$this->acl->add(new Zend_Acl_Resource('account'));
$this->acl->add(new Zend_Acl_Resource('admin'));
// по умолчанию даем всемпользователям доступ ко всему
// кроме управления учетными записями и администрированием
$this->acl->allow();
$this->acl->deny(null, 'account');
$this->acl->deny(null, 'admin');
// добавляем исключение. чтобы гости могли войти или
// зарегистрироваться, если нет привилегий
$this->acl->allow('guest', 'account', array('login',
'fetchpassword',
'register',
'registercomplete'));
// позволяем зарегистрированным пользователям доступ к управлению учетными записями
$this->acl->allow('member', 'account');
// даем администраторам доступ в область администрирования
$this->acl->allow('administrator', 'admin');
}
/**
* preDispatch
*
* Прежде, чем отправлять запрос на обработку, проверяет есть ли у пользователя
* нужные привелегии. Если нет, инициирует операцию по умолчанию
*
*
* @param Zend_Controller_Request_Abstract $request
*/
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
// проверка, вошел ли пользователь и имеет ли нужную роль