RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1
<?php // Подключаем файл настроек require 'applications/settings/config.php'; // Создаем строку путей $paths = implode(PATH_SEPARATOR, array ( $config['path']['libs'], $config['path']['models'], $config['path']['system'] )); // Пути по которым происходит поиск подключаемых файлов, это папка библиотек, моделей и системных файлов set_include_path($paths); // Подключение главного системного класса require 'Kernel.php'; // Запуск приложения Kernel::run($config);
public static function run($config) { try { // Запуск autoload Zend_Loader::registerAutoload(); // Создание объекта конфигурации $cnf = new Zend_Config($config); // Занесение объекта конфигурации в реестр Zend_Registry::set('cnf', $cnf); // Подключение к базе данных self::setDbAdapter(); // Подключение файла с правилами маршрутизации if (file_exists($cnf->path->system.'routes.php')) { require($cnf->path->system.'routes.php'); } // Инициализация Zend_Layout, настройка пути к макетам, а также имени главного макета. Zend_Layout::startMvc(array( 'layoutPath' => $cnf->path->layouts, 'layout' => 'index', )); // Получение объекта Zend_Layout $layout = Zend_Layout::getMvcInstance(); // Инициализация объекта Zend_View $view = $layout->getView(); // Настройка расширения макетов $layout->setViewSuffix('tpl'); // Задание базового URL $view->baseUrl = $cnf->url->base; // Задание пути для view части $view->setBasePath($cnf->path->views); // Установка объекта Zend_View $layout->setView($view); // Настройка расширения view скриптов с помощью Action помошников $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); $viewRenderer->setView($view) ->setViewSuffix('tpl'); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); // Создание объекта front контроллера $front = Zend_Controller_Front::getInstance(); // Настройка front контроллера, указание базового URL, правил маршрутизации $front->setBaseUrl($cnf->url->base) ->setRouter($router); // Запуск приложения, в качестве параметра передаем путь к папке с контроллерами Zend_Controller_Front::run($cnf->path->controllers); } catch (Exception $e) { // Перехват исключений Error::catchException($e); } }
<?php $config = array ( // Настройки соединения с БД 'db' => array ( 'adapter' => 'PDO_MYSQL', 'params' => array( 'host' => 'localhost', 'username' => 'root', 'password' => 'xxxx', 'dbname' => 'ilovezf', 'driver_options'=> array(PDO::ATTR_EMULATE_PREPARES => true), 'profiler' => false, ), ), );
<?php $router = new Zend_Controller_Router_Rewrite(); $router->addRoute('articles', new Zend_Controller_Router_Route('articles/:articleId', array('module' => 'default', 'controller' => 'articles', 'action' => 'view')) ); $router->addRoute('pages', new Zend_Controller_Router_Route('pages/:pageId', array('module' => 'default', 'controller' => 'index', 'action' => 'page')) );
// Создание объекта front контроллера $front = Zend_Controller_Front::getInstance(); // Настройка front контроллера, указание базового URL, правил маршрутизации $front->setBaseUrl($cnf->url->base) ->setRouter($router); // Запуск приложения, в качестве параметра передается путь к папке с контроллерами Zend_Controller_Front::run($cnf->path->controllers);
<?php class Error { /** * Управление ошибками * * @param exception $exception Перехватываемое исключение */ public static function catchException(Exception $exception) { // Получение текста ошибки $message = $exception->getMessage(); // Получение трейса ошибки как строки $trace = $exception->getTraceAsString(); $str = 'ERROR: ' . $message . "n" . $trace; $cnf = Zend_Registry::get('cnf'); // Если включен режим отладки отображаем сообщение о ошибке на экран if($cnf->debug->on) { Zend_Debug::dump($str); } // Иначе выводим сообщение об ошибке else { // Здесь может происходить логирование ошибки, уведомление вебмастера и т д die('System error! Please try later'); } } }
class ArticlesController extends Zend_Controller_Action { /** * Список статей */ public function indexAction() { // Создание объекта модели, благодаря autoload нам нет необходимости подключать класс через require $articles = new ArticlesModel(); // Выполнения метода модели по получению списка статтей $articlesList = $articles->getArticles(); // Определение переменных для вида $this->view->articlesList = $articlesList; } /** * Выбранная статья */ public function viewAction() { // Получение параметра пришедшего от пользователя $articleId = $this->_getParam('articleId'); // Создание объекта модели $articles = new ArticlesModel(); // Выполнения метода модели по получению информации о статье $articleInfo = $articles->getArticles($articleId); // Определение переменных для вида $this->view->articleInfo = $articleInfo; } }
// Подключение к БД, так как Zend_Db "понимает" Zend_Config, // нам достаточно передать специально сформированный объект конфигурации в метод factory $db = Zend_Db::factory($cnf->db); // Задание адаптера по умолчанию для наследников класса Zend_Db_Table_Abstract Zend_Db_Table_Abstract::setDefaultAdapter($db);
<?php class ArticlesModel extends Zend_Db_Table_Abstract { // Имя таблицы protected $_name = 'articles'; /** * Получить все статьи или одну * * @param int $articleId Идентификатор статьи * @return array */ public function getArticles($articleId = NULL) { // Создаем объект Zend_Db_Select $select = $this->getAdapter()->select() // Таблица из которой делается выборка ->from($this->_name) // Добавление таблицы с помощью join, указывается поле связи ->join('users','users.id = articles.author_id',array('name')) // Порядок сортировки ->order('id DESC') // Количество возвращаемых записей ->limit(2) ; if (!is_NULL($articleId)) { // Условие на выборку $select->where("articles.id = ?",$articleId); // Выполнение запроса $stmt = $this->getAdapter()->query($select); // Получение данных $res = $stmt->fetch(); } else { $stmt = $this->getAdapter()->query($select); // Получение массива данных $res = $stmt->fetchAll(); } return $res; } }
$select = $this->getAdapter()->select() ->from('articles') ->where("articles.id = ?",$articleId) ->join('users','users.id = articles.author_id',array('name')) ->order('id DESC') ->limit(2);
<?php /** * Работа с страницами */ class PagesModel extends Zend_Db_Table_Abstract { // Имя таблицы protected $_name = 'pages'; /** * Получить одну страницу (альтернативой этому методу может быть встроенный метод find) * * @param int $pageId Идентификатор страницы * @return array */ public function getPage($pageId) { // Создание объекта Zend_Db_Table_Select, // Нам не нужно указывать название таблицы как в Zend_Db_Select $select = $this->select() // Накладываем условие ->where('id = ?', $pageId); // Выполняем запрос и получаем объект Zend_Db_Table_Row в результате // Нам не нужно предварительно выполнять запрос методом query, как в Zend_Db_Select $row = $this->fetchRow($select); // Преобразовываем Zend_Db_Table_Row в массив $res = $row->toArray(); return $res; }
<ul> <?php foreach ($this->articlesList as $article): ?> <li><a href = "/articles/<?php print $article['id']; ?>/"><?php print $article['title']; ?></a></li> <?php endforeach; ?> </ul>
// Doctype <html> <head> // Мета теги // Подключение css и т д </head> <body> ... </body> </html>
<?php print $this->doctype(Zend_View_Helper_Doctype::XHTML1_TRANSITIONAL); ?> <html> <head> <?php print $this->headTitle('I LOVE ZEND FRAMEWORK!'); ?> <?php print $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8'); ?> <?php print $this->headLink()->appendStylesheet($this->baseUrl.'public/design/css/style.css'); ?> <?php print $this->headScript(); ?> </head> <body> <div id="menu"> <?php print $this->partial('menu.tpl'); ?> </div> <div id="main"> <div id="left"> <div style = "margin:5px;">Лучшие статьи:</div> <?php print $this->action('index', 'articles'); ?> <div id = "copy">(c) San <a href = "http://zendframework.ru">http://zendframework.ru</a></div> </div> <div id="content"><?php print $this->layout()->content; ?></div> </div> </body> </html>
Написать письмо на e-mailicq 415547094 romverinbox.ru© 1997 - 2026 romver.ru