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&param_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&param=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(){
		
	}
	
}