Acode Framework
Установка Acode Framework.
[править]1. Распакуйте архив AFI.zip/AFI.tar.gz в вашу директорию.
Пример:
your_dir/ install/ install.php
2.Запустите в броузере файл install.php.
Пример:
http://localhost/your_dir/install.php
3.Установите фреймворк нажав кнопку "Install AF". Это все.
Проверить работу приложений можно перейдя по ссылкам.
http://localhost/your_dir/index.php
- демо - приложение
http://localhost/your_dir/dev.php
- приложение для быстрой разработки других приложений
Введение.
[править]Особености фреймворка:
- MVC
- PDO
- Ajax
- jQuery
- Мультиязычность
- php 5.2 или старше.
- Поддержка других классов и библиотек(Zend Framework, Solar, Smarty, outletORM, objSQL, PHPMailer, TCPDF).
- Темы (layouts) для приложения.
- Все элементы являются объектами
- Дружественные URL.
Все файлы ядра имеют префикс "af_".
Все классы ядра имеют префикс "af".
Все переменные ядра имеют префикс "a".
Все методы ядра имеют префикс "f".
Для работы с фреймворком определены только 2 метода: a() и f().
Метод a() устанавливает переменные для приложения и возвращает эти переменные(массивы, строки и объекты).
Метод f() только устанавливает переменные для приложения.
Примеры работы.
[править]1. Структура фреймворка.
Module - приложение, которое может работать автономно( например директория 'demo' спроектированная на основе архитектуры MVC).
Extenstion - расширение функциональности и дополнительных возможностей самого фреймворка(например Smarty в system/af_ext/ ).
Структура AF:
demo/ //приложение-модуль demo model/ MyModel.php // модель для приложения templates_c/ view/ index.tpl // файл представления для приложения index.php // котроллер для приложения system/ af_ext/ // директория для файлов расширений Smarty/ Smarty.php // файл с классом расширения af_language/ af_en.php // файл с переводом af_theme/ default/ // имя темы js/ css/ images/ af_index.php // layout для приложения af_core.php // ядро AF index.php // загрузочный файл приложения demo config.php // конфигурационный файл для приложения demo
URL для доступа к приложению может быть 2 видов и распознаются автоматически:
http://localhost/acode/index.php/module_controller/index/param_name/param_value
http://localhost/acode/index.php?c=module_controller&m=index¶m_name=param_value
где module - имя модуля, controller - имя контроллера, index - имя метода, param_name - имя параметра передаваемого методу, param_value - значение этого параметра.
В одном приложении одновременно можно использовать разные URL.
Переменные 'c' для контроллера и 'm' для метода можно изменить в конф. файле config.php
2. Настройка конфигурации.
В файле index.php можно изменять параметры конфигурации приложения через передачу массива в контроллер класса Config().
Например:
new Config(array("APPLICATION"=>array("LANGUAGE"=>"ru")));
или для определения роутинга для приложения
new Config(array("ROUTING"=>array(
'/\/index\/(.*)/'=> 'index',
'/\/login\//'=> array('demo_index','login'),
'/\/logout\//'=> array('demo_index','logout')
)));
3. Построение приложения.
URL: http://localhost/your_dir/index.php?c=demo_index&m=index&page=1
Файл контроллера demo/index.php:
<?php
class demo_index extends afController{
private $view = null;
function __construct() {
$this->f('init', array('post','get')); // инициализируем врапперы для массивов $_POST и $_GET
$this->view = $this->a('view'); // получаем объект представления
}
function indexAction() {
$this->view->page = $this->get->page; // присваиваем переменной представления переменную из враппера массива $_GET
$this->view->display('index.tpl'); // отображаем контент
}
}
Файл представления index.tpl:
<div><?php echo $page; ?></div>
4. Возможности контроллеров Acode Framework.
Установка новой темы для приложения с дополнительными параметрами для темы:
$this->f('layout', 'new', array('footerForLayout'=>'<input id="id_ajax" type="button" value="'.$this->lang->ajax_test.'">'));
или без них:
$this->f('layout', 'new');
Смена языка для приложения в конструкторе приложения:
$this->f('lang', 'ru');
Инициализация модели:
$this->model = $this->a('model', new demo_model_DB());
$this->model = $this->a('model','demo_model_DB');
5. Применение технологии AJAX.
При запросе ajax с помощью фреймворка jQuery http://localhost/your_dir/index.php?c=demo_index&m=test¶m=value
Файл контроллера demo/index.php:
<?php
class demo_index extends afController{
function testAjax(){ // метод обслуживающий AJAX запросы
$one = trim($this->post->paramone);
return print 'Response for params:'.$one;
}
}
6. Пример интеграции технологии ORM(OutletORM) в AF.
Создайте новую базу данных с именем outlet.
В конструкторе контроллера инициализируем соединение OutletORM с БД.
В модели demo_model_User определим нашу таблицу с полями.
В методе indexAction внесем новую запись в таблицу.
Файл контроллера index.php модуля demo:
<?php
class demo_index extends afController{
private $model = null;
private $outlet = null;
function __construct() {
...
$this->model = $this->a('model', new demo_model_User());
Outlet::init(array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=outlet',
'username' => 'root',
'password' => '',
'dialect'=>'mysql'),
'classes' => array(
'demo_model_User' => array(
'table' => 'users',
'props' => array(
'ID' => array('id', 'int', array('pk'=>true, 'autoIncrement'=>true)),
'Username' => array('username', 'varchar'))))));
$this->outlet = Outlet::getInstance();
$this->outlet->createProxies();
}
function indexAction() {
...
$this->model->Username = 'Test user';
$this->outlet->save($this->model);
...
}
}
Файл модели User.php модуля demo:
<?php
class demo_model_User extends afModel{
public $ID;
public $Username;
function __construct(){
}
}