[шара] L2jscheme
Данная библиотека парсит SQL запросы по определенной схеме.
Пример:
/**
* Index file.
* Testing L2JScheme.
*
* @author mangoost <[email protected]>
* @license http://www.gnu.org/licenses/gpl.html
* @version 0.1-dev
*/
// Подключаем библиотеку
require 'L2JScheme/L2JScheme.php';
// Конфигурация для библиотеки
// ключ => схема
$config = array(
'l2jserver_it' => 'l2jserver_it',
'l2jserver_t2_2' => 'l2jserver_t2_2'
);
// Создаем новый экземпляр библиотеки(класса)
$object = new L2JScheme($config);
// SQL запрос
$sql = "SELECT * FROM {table:accounts} WHERE {col:accounts:login}='user' and {col:accounts:access}=0;";
// Для того что бы выполнить парсинг необходимо обратится к любому ключу который мы указали в конфигурации
// $object->ключ->parseSql($sql);
echo "<pre>";
echo 'Global SQL: '.$sql;
echo "</pre>";
echo "<pre>";
echo 'L2JServer IT <br />';
echo ' Result SQL: '.$object->l2jserver_it->parseSql($sql);
echo "</pre>";
echo "<pre>";
echo 'L2JServer T2.2 <br />';
echo ' Result SQL: '.$object->l2jserver_t2_2->parseSql($sql);
echo "</pre>";
В результате:
Global SQL: SELECT * FROM {table:accounts} WHERE {col:accounts:login}='user' and {col:accounts:access}=0;
L2JServer IT
Result SQL: SELECT * FROM accounts WHERE login='user' and access_level=0;
L2JServer T2.2
Result SQL: SELECT * FROM accounts WHERE login='user' and accessLevel=0;
Пример схем:
L2JServer IT
tables:
accounts: accounts
# Columns
cols:
accounts: { login: login, access: access_level }
L2JServer T2.2
tables:
accounts: accounts
# Columns
cols:
accounts: { login: login, access: accessLevel }
Требования:
- PHP 5
- PCRE
Для написание схем баз данных разных серверов нужно знать язык YAML
_http://ru.wikipedia.org/wiki/YAML
[attachment=4034:L2JScheme.zip]
Dump: _http://dump.ru/file/3282838
Объясняю для чайников: данная библа полезна для написания CMS и движков для Л2 с использованием разных баз данных (как в примере - интерлюдия и грация), т.е. без использования громоздких конструкций и больших кусков кода.
— Дурак дураком
Идея наша однако.
И как показывает практика, лучше прям запросы выносить, а не столбцы, особенно актуально для запросов с джоинами.
Не знаю чея это идея, но я писал с нуля.
Я даже ваш модуль толком и не смотрел.
А вообще я бы еще написал бы по другому.
Схема:
Пример:
'server_1' => array('controller' => 'L2JServer', 'params' => array('...')),
'server_2' => array('controller' => 'L2JFree', 'params' => array('...'))
);
$object = new BaseClass($configuration);
$object->server_1->method($var);
$object->server_2->method($var);
$object->method($var);
В результате мы получим удобную работу гибкую работу с серверам в частности с database, telnet и много другое.
Контроллеры могут использовать разные плагины, хелперы, библиотеки(например работа с разными базами данных (MySQL, MSSQL)), модели данных.
Да я уже думал на классах все делать, ща базу знаний вояю, 1-ый раз попробовал на пхп заюзать классы, реально удобно, только не привычно после функционального/структурного постоения кода. И в башке как-то все эти структуры пока сложновато правильно строить)
Но надо учиться, ибо ООП это круто, я это понял =)




