This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "quickfw".
The branch, master has been updated
via 86b897b55b48634d6b97b7e83789bcad78b6dd07 (commit)
via e81202811dc4f3ab63904971a9c0f12b59486f47 (commit)
via 581fe0d885639a47fa2f2bcf92c6b110f3cefd9c (commit)
via c0bd69d59df26b34dbeb5843efd1bfa779cae3bb (commit)
from 292f23a2bb4a0725ce65d5e72d7ab40d609e6d9e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 86b897b55b48634d6b97b7e83789bcad78b6dd07
Author: Ivan1986 <iva...@li...>
Date: Tue Apr 20 17:07:48 2010 +0400
Описание автолоада
diff --git a/doc/asciidoc/Makefile b/doc/asciidoc/Makefile
index 8ddbaca..c5da5ba 100644
--- a/doc/asciidoc/Makefile
+++ b/doc/asciidoc/Makefile
@@ -1,6 +1,6 @@
all: quickfw.pdf quickfw.html
-FILES = quickfw general quickstart directory mvc blocks templates cache auth features
+FILES = quickfw general quickstart directory mvc blocks templates cache auth autoload features
TEXTS = $(addsuffix .txt, $(FILES) )
quickfw.pdf: $(TEXTS)
diff --git a/doc/asciidoc/autoload.txt b/doc/asciidoc/autoload.txt
new file mode 100644
index 0000000..c28ae71
--- /dev/null
+++ b/doc/asciidoc/autoload.txt
@@ -0,0 +1,12 @@
+Автолоад
+--------
+
+Есть возможность опционально включить автолоад классов.
+
+Параметр +QFW::$config[\'QFW'][\'autoload']+ по умолчанию имеет значение +false+.
+
+Имя файла совпадает с именем класса, символ +_+ заменяется на +/+.
+
+Файлы ищутся в папке библиотек (константа +LIBPATH+) и папке моделей (+MODPATH+).
+
+Если указать в +QFW::$config[\'QFW'][\'autoload']+ имя функции, то если не будет найден класс, то последней вызовется указанная функция.
diff --git a/doc/asciidoc/quickfw.txt b/doc/asciidoc/quickfw.txt
index 0ab4943..664bd48 100644
--- a/doc/asciidoc/quickfw.txt
+++ b/doc/asciidoc/quickfw.txt
@@ -19,5 +19,6 @@ include::cache.txt[]
include::auth.txt[]
+include::autoload.txt[]
include::features.txt[]
commit e81202811dc4f3ab63904971a9c0f12b59486f47
Author: Ivan1986 <iva...@li...>
Date: Tue Apr 20 16:57:27 2010 +0400
Опциональный автолоад
diff --git a/QFW/Init.php b/QFW/Init.php
index fe3ba58..78924e2 100644
--- a/QFW/Init.php
+++ b/QFW/Init.php
@@ -95,6 +95,13 @@ class QFW
if (!empty(self::$config['QFW']['catchFE']))
require QFWPATH.'/QuickFW/Error.php';
+ //автолоад
+ if (!empty(self::$config['QFW']['autoload']))
+ {
+ require QFWPATH.'/QuickFW/Autoload.php';
+ Autoload::Init(self::$config['QFW']['autoload']);
+ }
+
//JsHttpRequest
if (isset($_REQUEST['JsHttpRequest']))
{
diff --git a/QFW/QuickFW/Autoload.php b/QFW/QuickFW/Autoload.php
new file mode 100644
index 0000000..92f9772
--- /dev/null
+++ b/QFW/QuickFW/Autoload.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * Класс для автолоада
+ *
+ * @author ivan1986
+ */
+class Autoload
+{
+ /**
+ * Инициализация автолоада
+ *
+ * @param string|boolean $function имя дополнительной функции
+ */
+ static public function Init($function = false)
+ {
+ spl_autoload_register(array(__CLASS__, 'Dirs'));
+ if (is_callable($function))
+ spl_autoload_register($function);
+ }
+
+ /**
+ * Функция автолоада
+ *
+ * @param string $class искомый класс
+ */
+ static public function Dirs($class)
+ {
+ $list = array(
+ LIBPATH,
+ MODPATH,
+ );
+ $class = str_replace('_', '/', $class);
+ foreach ($list as $dir)
+ if (is_file($dir.'/'.$class.'.php'))
+ {
+ require $dir.'/'.$class.'.php';
+ return true;
+ }
+ return false;
+ }
+
+}
+
+?>
diff --git a/QFW/config.php b/QFW/config.php
index 25d95d9..4fd5b91 100644
--- a/QFW/config.php
+++ b/QFW/config.php
@@ -36,6 +36,7 @@ $config['QFW'] = array(
'catchFE' => false, /* перехват ошибок как исключений, исключений как логов и фатальных ошибок */
'ErrorStack' => false, /* вывод стека вызовов в сообщении об ошибке в БД */
'cacheSessions' => false, /* Хранить сессии в кеше, не использовать стандартный механизм */
+ 'autoload' => false, /* включить автолоад false|true|string */
);
/**
diff --git a/application/default.php b/application/default.php
index c7fce50..71235fe 100644
--- a/application/default.php
+++ b/application/default.php
@@ -63,6 +63,7 @@ $config['QFW'] = array(
'catchFE' => false, /* перехват ошибок как исключений, исключений как логов и фатальных ошибок */
'ErrorStack' => false, /* вывод стека вызовов в сообщении об ошибке в БД */
'cacheSessions' => false, /* Хранить сессии в кеше, не использовать стандартный механизм */
+ 'autoload' => true, /* включить автолоад false|true|string */
);
/* Шаблонизатор - имя класса + дефолтовый шаблон */
commit 581fe0d885639a47fa2f2bcf92c6b110f3cefd9c
Author: Ivan1986 <iva...@li...>
Date: Tue Apr 20 16:56:41 2010 +0400
Динамически подключаемые файлы вынесены в функцию
diff --git a/QFW/Init.php b/QFW/Init.php
index d5c9502..fe3ba58 100644
--- a/QFW/Init.php
+++ b/QFW/Init.php
@@ -3,7 +3,7 @@
class QFW
{
/** @var array Глобальный массив данных */
- static public $globalData;
+ static public $globalData = array();
/** @var QuickFW_Router Роутер */
static public $router;
@@ -15,13 +15,13 @@ class QFW
static public $view;
/** @var array Подключенные глобальные библиотеки */
- static public $libs;
+ static public $libs = array();
- /** @var DbSimple_Generic_Database Подключение к базе данных */
- static public $db;
+ /** @var DbSimple_Generic_Database|false Подключение к базе данных */
+ static public $db = false;
/** @var mixed|false Данные о пользователе */
- static public $userdata;
+ static public $userdata = false;
/** @var JsHttpRequest|false JsHttpRequest, если был выполнени Ajax запрос */
static public $ajax = false;
@@ -59,12 +59,9 @@ class QFW
require QFWPATH.'/QuickFW/Cache.php';
require QFWPATH.'/QuickFW/Plugs.php';
- //Библиотеки
- self::$libs = array();
- //глобальный массив
- self::$globalData = array();
- //Данные о пользователе
- self::$userdata = false;
+ //выставляем заголовок с нужной кодировкой
+ if (!empty(self::$config['host']['encoding']))
+ header("Content-Type: text/html; charset=".self::$config['host']['encoding']);
//Подключаем шаблонизатор
$templ = ucfirst(self::$config['templater']['name']);
@@ -73,31 +70,41 @@ class QFW
self::$view = new $class(APPPATH,
isset(self::$config['templater']['def_tpl']) ? self::$config['templater']['def_tpl'] : '');
- //Если запрос через JsHttp, то инициализируем библиотеку
- //и устанавливаем пустой главный шаблон
+ //подключаем модули и библиотеки
+ self::modules();
+
+ require QFWPATH.'/QuickFW/Router.php';
+ self::$router = new QuickFW_Router(APPPATH);
+
+ }
+
+ /**
+ * Инициализирует необязательные модули
+ * <br>в зависимости от настроек конфигов
+ */
+ static public function modules()
+ {
+ //Инициализируем класс базы данных
+ if (!empty(self::$config['database']))
+ {
+ require LIBPATH.'/DbSimple/Connect.php';
+ self::$db = new DbSimple_Connect(self::$config['database']);
+ }
+
+ //Включаем обработку фатальных ошибок, если в конфиге указано
+ if (!empty(self::$config['QFW']['catchFE']))
+ require QFWPATH.'/QuickFW/Error.php';
+
+ //JsHttpRequest
if (isset($_REQUEST['JsHttpRequest']))
{
require_once LIBPATH.'/JsHttpRequest.php';
//QFW::$libs['JsHttpRequest'] для совместимости со старым вариантом
self::$ajax = QFW::$libs['JsHttpRequest'] = new
JsHttpRequest(self::$config['host']['encoding']);
+ //устанавливаем пустой главный шаблон
self::$view->mainTemplate = '';
}
-
- require LIBPATH.'/DbSimple/Connect.php';
- //Инициализируем класс базы данных
- self::$db = new DbSimple_Connect(self::$config['database']);
-
- //выставляем заголовок с нужной кодировкой
- if (!empty(self::$config['host']['encoding']))
- header("Content-Type: text/html; charset=".self::$config['host']['encoding']);
- //Включаем обработку фатальных ошибок, если в конфиге указано
- if (!empty(self::$config['QFW']['catchFE']))
- require QFWPATH.'/QuickFW/Error.php';
-
- require QFWPATH.'/QuickFW/Router.php';
- self::$router = new QuickFW_Router(APPPATH);
-
}
}
commit c0bd69d59df26b34dbeb5843efd1bfa779cae3bb
Author: Ivan1986 <iva...@li...>
Date: Tue Apr 20 15:54:25 2010 +0400
Хранение сессий в кеше - дефолтовый конфиг
diff --git a/QFW/config.php b/QFW/config.php
index 07ff4d8..25d95d9 100644
--- a/QFW/config.php
+++ b/QFW/config.php
@@ -35,6 +35,7 @@ $config['QFW'] = array(
'release' => false, /* статус проекта на данном хосте - отладка и всякие быстрые компиляции */
'catchFE' => false, /* перехват ошибок как исключений, исключений как логов и фатальных ошибок */
'ErrorStack' => false, /* вывод стека вызовов в сообщении об ошибке в БД */
+ 'cacheSessions' => false, /* Хранить сессии в кеше, не использовать стандартный механизм */
);
/**
-----------------------------------------------------------------------
Summary of changes:
QFW/Init.php | 70 +++++++++++++++++++++++++++------------------
QFW/QuickFW/Autoload.php | 45 +++++++++++++++++++++++++++++
QFW/config.php | 2 +
application/default.php | 1 +
doc/asciidoc/Makefile | 2 +-
doc/asciidoc/autoload.txt | 12 ++++++++
doc/asciidoc/quickfw.txt | 1 +
7 files changed, 104 insertions(+), 29 deletions(-)
create mode 100644 QFW/QuickFW/Autoload.php
create mode 100644 doc/asciidoc/autoload.txt
hooks/post-receive
--
quickfw
|