Данный файл является своего рода дополнительным мини-фреймворком с публичными правами функций и возможностью статического вызова.
Список методов (+/-)
Метод GRLAB::singltone()
Данный метод есть экземпляр нашего класса,т.к. создание копий (клонирования) класса запрещено его системой,так же как и вызов конструктора напрямую.
Метод __clone()
Метод,выдающий ошибку уровня T_WARNING ,запрещающий клонирование класса.
Метод GRLAB::storeObject($obj,$key)
Объект регистрации нового объекта (утилиты) из папки .grlab. Имя объекта является именем файла-утилиты*,а $key является ключом данного объекта к вызову из метода GRLAB::getObject($key).
Важно: имя объекта в виде $object ,в спойлере "Примеры" будет экземпляр работы
Данный метод есть экземпляр нашего класса,т.к. создание копий (клонирования) класса запрещено его системой,так же как и вызов конструктора напрямую.
Метод __clone()
Метод,выдающий ошибку уровня T_WARNING ,запрещающий клонирование класса.
Метод GRLAB::storeObject($obj,$key)
Объект регистрации нового объекта (утилиты) из папки .grlab. Имя объекта является именем файла-утилиты*,а $key является ключом данного объекта к вызову из метода GRLAB::getObject($key).
Важно: имя объекта в виде $object ,в спойлере "Примеры" будет экземпляр работы
Примеры кода (+/-)
Вызов класса и тестирование
Метод GRLAB::storeObject()
Сам класс GRLAB
<?php
require_once(ROOTPATH.'/incfiles/classes/grlab.php');
//Подключаем класс
$GRLAB=GRLAB::singltone();
print $GRLAB->getName();
//получаем имя мода
?>
Метод GRLAB::storeObject()
<?php
//Сам метод
public static function storeObject($object,$key)
{
require_once(ROOTPATH.'/incfiles/classes/.grlab/'.$object.'.class.php');
self::$objects[$key]=new $object;
}
?>
<?php
//Регистрация и получение объекта
require_once(ROOTPATH.'/incfiles/classes/grlab.php');
//Включили мод
$GRLAB=GRLAB::singltone();
//Экземпляр мода
$GRLAB->storeObject('test','myutil');
//Зарегистрировали
$UTIL=$GRLAB->getObject('myutil');
//Получили экземпляр
$UTIL->test();
//Вызвали утилиту
?>
Сам класс GRLAB
<?php
/**
*@copyright JohnCMS 6.1.1
*@author Gr.LAB Company
*Класс GTLAB
*/
class GRLAB{
/**
*Переменная объектов
*@access private
*/
private static $objects=array();
/**
*Переменная шаблонизатора
*@access private
*/
private static $models=array();
/**
*Имя фреймворка (да назовем так)
*@access private
*/
private static $framework=array(
'name'=>'GTLAB JohnCMS Mini Framework',
'version'=>'1.0'
);
/**
*Переменная экземпляра
*@access private
*/
private static $instance;
/**
*Запрещаем вызов конструктора
*@access private
*/
private function __construct()
{
}
/**
*Экземпляр нашего класса
*@access public
*/
public static function singltone()
{
if(!isset(self::$instance))self::$instance=__CLASS__;
return self::$instance;
}
/**
*Информация о фреймворке
*@access public
*/
public static function getGRLAB($key)
{
return self::$framework[$key];
}
/**
*Регистрация утилиты
*@access public
*/
public static function storeObject($name,$key)
{
require_once(ROOTPATH.'/incfiles/classes/.grlab/'.$name.'.class.php');
self::$objects[$key]=new $name;
}
/**
*Получение объекта
*@access public
*/
public static function getObject($key)
{
return self::$objects[$key];
}
}
?>
Шаблонизатор
Данный класс является утилитой к выше указанному.
Методы (+/-)
htmler::storeSetting()
Устанавливает настройки класса - имя модели и ее содержимое (последнее изменять не рекомендуется).
Устанавливает настройки класса - имя модели и ее содержимое (последнее изменять не рекомендуется).
Примеры кода (+/-)
Класс htmler
Использование шаблонизатизатора
<?php
/**
*Класс шаблонизатора
*@copyright JohnCMS 6.1.1
*@author Gr.LAB
*/
class htmler{
/**
*Патч с шаблоном
*/
private static $path='models/';
/**
*Интерпретатор (выкл. по умолчанию)
*/
private static $php=false;
/**
*Экземпляр по типу родительского фреймворка
*/
private static $instance;
/**
*Закрытые данные
*/
private static $Settings=array(
'model_name'=>'none',
'model_body'=>'none'
);
/**
*Функция-модель класса
*/
public static function getInstance()
{
$class=__CLASS__;
self::$instance=new $class;
return self::$instance;
}
/**
*Функция-настройщик
*/
public static function storeSetting($setting,$value)
{
self::$Settings[$setting]=$value;
}
/**
*Получение содержимого модели
*/
private static function open()
{
self::$Settings['model_body']=file_get_contents(ROOTPATH.self::$path.self::$Settings['model_name'].'.dps');
}
/**
*Замена переменных
*/
private static function replace($vars)
{
foreach($vars as $var)
{
global $var;
self::$Settings['model_body']=strtr(self::$Settings['model_body'],array("[{$var}]",$$var));
}
}
/**
*PHP интерпретатор модели
*/
private static function php()
{
self::$Settings['model_body']=eval('?>'.self::$Settings['model_body']);;
}
/**
*Вывод модели
*/
public static function view($vars)
{
self::open();
if($vars!=null)self::replace($vars);
self::php();
return self::$Settings['model_body'];
}
}
?>
Использование шаблонизатизатора
<?php
require(ROOTPATH.'incfiles/classes/grlab.php');
$GRLAB=GRLAB::singltone();
$GRLAB->storeObject('htmler','htmler');
$HTMLER=$GRLAB->getObject('htmler');
$HTMLER->storeSetting('model_name','test');
$HTMLER->open();
print $HTMLER->view(null);
?>
Текущие скриншоты (+/-)
Тему не удалять,описание допиливаю!
Почистил от флуда