Рекомендуем для начала ознакомиться с подробными инструкциями по установке проекта на базе Limb3. Скопируйте все содержимое из папки /skel пакета WEB_APP в директорию с вашим приложением, например my_app.
Итак, внутри папки вашего приложения будут следующие файлы и директории:
my_app |-- cli - здесь удобно хранить различные вспомогательные скрипты (скрипты сборки, крон-скрипты и т.п.) |-- init - здесь можно хранить данные, требуемые при разворачивании вашего приложения, например схему базы данных |-- lib - здесь хранятся все подключаемые библиотеки, в том числе и саму папку limb следует положить сюда, если php еще не находит ее автоматически |-- settings - здесь располагаются конфигурационные файлы | |-- common.conf.php - общие настройки | |-- db.conf.php - подключение базы данных | |-- macro.conf.php - шаблонизатор MACRO | |-- routes.conf.php - правила генерации ссылок (url-rewrite) | `-- wact.conf.php - шаблонизатор WACT |-- src - здесь мы разместим собственно код приложения |-- template - папка, где находятся шаблоны приложения |-- tests - папка с тестами приложения `-- www - сюда должен указывать корень веб-сервера (DocumentRoot приложения) | |-- .htaccess | |-- favicon.ico | `-- index.php |-- setup.override.php.tpl |-- setup.php
Убедитесь, что веб-сервер имеет права на запись в папку var, которая находится в корне вашего приложения.
Для инициализации приложения используется скрипт my_app/setup.php, в котором содержится различная конфигурационная информация.
<?php // Дополняем include_path директорией проекта и директорией с Limb3 пакетами (по умолчанию это my_app/lib) set_include_path(implode(PATH_SEPARATOR, array( dirname(__FILE__), dirname(__FILE__) . '/lib/', get_include_path() ) )); // здесь подключается файл setup.override.php, перекрывающий настройки в этом (setup.php) файле // это может быть использовано для различных настроек в режиме разработки и боевом режиме // по умолчанию файл не существует, однако, его шаблон можно посмотреть в файле setup.override.php.tpl if(file_exists(dirname(__FILE__) . '/setup.override.php')) require_once(dirname(__FILE__) . '/setup.override.php'); // подключим наиболее часто используемые составляющие пакетов core и web_app require_once('limb/core/common.inc.php'); lmb_package_require('web_app'); // Служебная переменная окружения LIMB_VAR_DIR указывает на расположение временных/изменяемых файлов(различные кеши, компилированные шаблоны, временные файлы и т.д). lmb_env_setor('LIMB_VAR_DIR', dirname(__FILE__) . '/var/'); if(!is_dir(lmb_env_get('LIMB_VAR_DIR'))) throw new Exception('Limb var dir defined but no directory really exists at "' . lmb_env_get('LIMB_VAR_DIR'). '"'); lmb_require('src/model/*.class.php') ?>
common.conf.php используется для хранения каких-либо общих параметров, а также для включения режима отладки. Режим отладки используется в macro.conf.php (см. ниже).
<?php $conf = array( 'debug_enabled' => true );
db.conf.php используется для хранения параметров подключения к базе данных. Для MySQL он будет выглядеть следующим образом:
<?php $conf = array('dsn' => 'mysql://root:secret@localhost/limb_crud?charset=utf8');
Для SQLite:
<?php $conf = array('dsn' => 'sqlite://localhost/path/to/sqlite.db?charset=utf8');
routes.conf.php используется для хранения правил отображения запросов к страницам на конкретные действия контроллеров. Такие правила называются маршрутами (routes).
<?php $conf = array( 'main' => array( 'path' => '/', 'defaults' => array( 'controller' => 'main_page', ) ) ); // Common routes, should be included AFTER yours include_once('limb/web_app/settings/routes.conf.php');
По умолчанию, routes.conf.php определяет только 1 пользовательский маршрут, указывающий на главную страницу. В данном случае main - это опциональное имя маршрута, path указывает на используемый запрос ( / (слэш) означает главную страницу), defaults содержит список параметров по умолчанию, которые следует переопределить. В данном случае переопределяется только контроллер - main_page, action по умолчанию считается display.
Важно: порядок маршрутов имеет значение - при переборе маршрутов будет использован первый подходящий маршрут, поэтому наиболее общие маршруты следует размещать в конце, а более специфичные в начале.
После пользовательских настроек, для удобства, подключаются маршруты Limb, содержащие правила для запросов вида /controller/action/id, /controller/action и /controller.
Это файл настройки шаблонной системы MACRO, которую мы будем использовать для вывода данных.
<?php include_once('limb/view/settings/macro.conf.php'); // Recompiling templates is enabled only in debug mode. $conf['forcecompile'] = lmbToolkit::instance()->isWebAppDebugEnabled();
Наиболее общие настройки MACRO наследуются из пакета VIEW. Для удобства разработки переопределяется лишь параметр forcecompile, который указывает, нужно ли заново компилировать шаблон при каждом обращении. В данном случае шаблоны будут перекомпилироваться лишь в режиме отладки, тогда как в боевом режиме на сервере этот параметр будет отключен.
Попробуйте зайти на страницу проекта. Вы должны увидеть страницу с надписью «Default main page.» Если это так, значит все пока нормально.
DocumentRoot нашего приложения - это папка www.
В папке www лежит файл .htaccess (см. ниже), который перенаправляет все запросы к index.php скрипту, если запрос не касается статичного контента (файла, директории и символической ссылки):
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-s RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php [L,QSA]
Cкрипт www/index.php, является единственной точкой входа в приложение:
<?php require_once(dirname(__FILE__) . '/../setup.php'); require_once('src/LimbApplication.class.php'); $application = new LimbApplication(); $application->process();
По сути все приложение - это один единственный класс.
Следующая страница: Шаг2. Вывод новостей через шаблон
Обсуждение