Berry Framework

Фреймворк, в который собраны функции использованные в различных проектах. В том числе: ORM, шаблонизатор и ряд других полезных в хозяйстве вещей.

Скачать
trunk-версия (650 КБ)
Наверх

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 это УРЛ по умолчанию, так же на него идёт обращение, если у УРЛа нет объекта.