B
Класс является ядром движка и содержит основные методы и переменные.
Методы
b::init()
Подготавливает Berry к работе.
Пример
b::init(array(
'path' => 'путь к локальной копии' // по умолчанию ".",
'lang' => 'язык', // по умолчанию берётся из Accept-Language браузера
'config' => array(
'json' => array( // теперь мы можем хранить настройки в json, помимо ini
'get' => function($filename){
return json_encode(file_get_contenta($filename), true);
}
)
)
));
Все настройки каскадны. Чем ближе файл к файлу, из которого запускается Berry, тем настройка приоритетнее. Если при инициальзации Berry указаны дополнительные типы файлов настроек, они так же приоритетнее стандартных ini-файлов.
Стандартный файл настроек berry/lib/mail.ini содержит
sender = Shiny Ass <bender@example.com>
type = text/plain
Создав файл application/lib/mail.ini и заполнив его
sender = Почтовый робот <no-reply@example.com>
and_test = Что-нибудь тестовое
Мы получим
sender = Почтовый робот <no-reply@example.com>
type = text/plain
and_test = Что-нибудь тестовое
b::version()
Возвращает номер версии движка и кодовое имя линейки.
Пример
// array([name] => Chinpoko [id] => 0.1.6)
print_r(b::version());
// 0.1.6
print_r(b::version('id'));
b::q()
Возвращает часть УРЛа.
Пример
Предположим, есть у нас УРЛ вида http://example.com/test/44, тогда
// array([0] => http://example.com [1] => test [2] => 44)
print_r(b::q());
// http://example.com/test
print_r(b::q(0, 1));
// test
print_r(b::q(-1));
b::l()
Полчает или устанавливает значение переменной (в пространство $GLOBALS).
Пример
$test = 'Test';
$array = array(
'key' => 'Value',
'arr' => array(
'sub' => 'Sub value'
),
'some.key' => 'Bla'
);
// Test
print_r(b::l('test'));
// WTF?
print_r(b::l('test', 'WTF?'));
// WTF?
print_r($test);
// Sub value
print_r(b::l('array.arr.sub'));
// Bla
print_r(b::l('array.some\.key'));
b::len()
Замена count() и strlen().
b::config()
Возвращает или ставит значение в настроек.
Пример
// text/plain
print_r(b::config('mail.type'));
Файлы конфигураций могут расширяться, например: lib/http.ini хранит настойки всего класса. А файл lib/http.method.ini - только определённого метода.
b::lang()
Возвращает перевод строки в соответствии с текущими настройками языка. В случае, когда перевода нет, возвращается строка из набора en.
b::call()
Служит для замены функций call_user_func() и call_user_func_array() с учётом автоподгрузки расширений. Фактически это __autoload() для функций.
Пример
// call_user_func()
print_r(b::call('explode', '|', 'Test1|Test2'));
// call_user_func_array()
print_r(b::call('*explode', array('|', 'Test1|Test2')));
// Hello World! My name is The Great Cornholio and I say "Fire! Fire!".
print_r(b::call('tag_hello_world', array()));
// Fatal error: Call to undefined function tag_hello_world()
print_r(tag_hello_world(array());
b::function_exists()
Проверяет существует ли функция с учётом неподключённых расширений.
b::autoload()
Данный метод следует регистрировать как autoload-функцию, если Berry запущен без помощи b::init().
b::load()
Загружает модуль из дериктории load.
Пример
// загружает load/test1.php
print_r(b::load('test1'));
// загружает load/test2/index.php
print_r(b::load('test2'));
// загружает load/test2/some.php
print_r(b::load('test2.some'));
b::show()
Загружает и возвращает шаблон из папки show. Вторым параметром может быть передан массив переменных видимые только этому шаблону.
Пример
// загружает show/test1.phtml
print_r(b::show('test1'));
// загружает show/test2/index.phtml
print_r(b::show('test2'));
// загружает show/test2/some.phtml
print_r(b::show('test2.some'));
Обратите внимание: если вам претит Piles и вы используете чистый PHP в шаблонах, то все функции расширений будут подгружаться автоматически.
index.phtml
Пробуем тег <hello_world />: <?=tag_hello_world(array('name' => 'Великий Кукурузо')) ?>.
index.php
// Не верно, так как не имеет смысла. b::show() сам это сделает.
// Причём, подключит только то, что действительно используется
include file::path('ext/hello_world.php');
echo b::show('index');
Если вызываемой функции не существует, то b::show() найдёт её в карте составленной b::call() и подключит файл. Делается подобный финт ушами с помощью token_get_all(), так что на скорость это не повлияет.
b::stat()
Возвращает массив с данными по статистике использования.
Пример
print_r(b::stat());
/* Array
(
[pgt] => 0.0333409118652
[sql] => Array
(
[time] => 0.000391960144043
[count] => 0
)
[memory] => Array
(
[limit] => 8 МБ
[usage] => 2.04 МБ
[peak] => 2.05 МБ
)
) */
Указав первый параметр можно получить конкретный ключ массива.
// 2.04 МБ
print_r(b::stat('memory.usage'));
b::router()
Привязывает объект к УРЛу.
Пример
b::router('home', new Page);
// или
b::router(array(
'home' => new Page,
// или
'home' => 'page',
// или
'home' => 'function',
// или
'home' => function(){
},
'path/to' => new Path_To
));
home это УРЛ по умолчанию, так же на него идёт обращение, если у УРЛа нет объекта.