База
Базовый класс представляет ядро фреймворка. Он содержит все необходимое для запуска простого приложения. Файл base.phpтакже включает в себя основные кэш, сборку, просмотр, ISO и классы реестра, чтобы уменьшить ненужный дисковый ввод-вывод для оптимальной производительности.
Не стесняйтесь удалять все остальные файлы в lib/каталоге, если все, что вам нужно, - это основные функции, предоставляемые этим пакетом.
Пространство имен: \ Расположение файла: lib/base.php

улей

Улей-это массив памяти, в котором хранятся переменные фреймворка в виде пар ключ / значение. Хранение значения в улье гарантирует, что оно глобально доступно для всех классов и методов в вашем приложении.

набор

Привязка значения к ключу улья
1
mixed set ( string $key, mixed $val [, int $ttl = 0 ] )
Copied!
Примеры установки переменных фреймворка:
1
$f3->set('a',123); // a=123, integer
2
$f3->set('b','c'); // b='c', string
3
$f3->set('c','whatever'); // c='whatever', string
4
$f3->set('d',TRUE); // d=TRUE, boolean
Copied!
Установка массивов:
1
$f3->set('hash',array( 'x'=>1,'y'=>2,'z'=>3 ) );
2
// dot notation is also possible:
3
$f3->set('hash.x',1);
4
$f3->set('hash.y',2);
5
$f3->set('hash.z',3);
Copied!
Настройка свойств объекта:
1
$f3->set('a',new \stdClass);
2
$f3->set('a->hello','world');
3
echo $f3->get('a')->hello; // world
Copied!
более короткий синтаксис ArrayAccess, начиная с версии v3. 4. 0
1
$f3->LANGUAGE = 'en';
2
$f3->foo = 1234;
3
$f3['bar'] = 'buzzword';
Copied!
Свойства кэширования
Если $ttlпараметр равен > 0 и механизм кэширования > framework включен, указанная переменная будет кэшироваться в течение $ttlнескольких секунд. Уже кэшированные Вары будут обновлены путем повторного использования старого времени истечения срока действия.
Если вам нужно кэшировать vars в течение бесконечного времени, проверьте метод Cache->set>.
Вы можете кэшировать строки, массивы и все другие типы-даже полные объекты. get() будет автоматически загружать их из кэша.
Примеры кэширования фреймворковых переменных:
1
// cache string
2
$f3->set('simplevar','foo bar 1337', 3600); // cache for 1 hour
3
//cache big computed arrays
4
$f3->set('fruits',array(
5
'apple',
6
'banana',
7
'peach',
8
), 3600);
9
// cache objects
10
$f3->set('myClass1', new myClass('arg1'), 3600);
11
// change expire time for a single cookie var
12
$f3->set('COOKIE.foo', 123, 3600); // 1 hour
13
$f3->set('COOKIE.bar', 456, 86400); // 1 day
Copied!
Системная переменная
Фреймворк имеет свои собственные системные переменные. Вы можете изменить их, чтобы изменить поведение фреймворка, например:
1
$f3->set('CACHE', TRUE);
2
$f3->set('HALT', FALSE);
3
$f3->set('CASELESS', FALSE);
Copied!
Также можно установить PHP глобалы через файлы COOKIE F3, GET, POST, REQUEST, SESSION, FILES, SERVER, env системные переменные. Эти 8 переменных автоматически синхронизируются с базовыми глобалами PHP.Примечание: Если вы устанавливаете или получаете доступ к ключу сеанса, сеанс запускается автоматически. Вам нет необходимости делать это самостоятельно.
Помните: ключи улья чувствительны к регистру. Кроме того, ключи корневого улья проверяются на валидность по этим разрешенным символам: [ a-z A-Z 0-9 _ ]

получить

Извлечение содержимого ключа улья
1
mixed get ( string $key [, string|array $args = NULL ] )
Copied!
Чтобы получить значение ранее сохраненного фреймворка var, используйте:
1
$f3->set('myVar','hello world');
2
echo $f3->get('myVar'); // outputs the string 'hello world'
3
$local_var = $f3->get('myVar'); // $local_var holds the string 'hello world'
Copied!
Если возвращаемое значение представляет собой строку, содержащую один или несколько заполнителей формата, аргументы могут передаваться непосредственно после имени ключа:
1
$f3->set('var1','Current date: {0,date} - Current time: {0,time}');
2
$f3->set('var2','Departure: {0,date} - Arrival: {1,date}');
3
echo $f3->get('var1',time());//shorthand for $f3->format($f3->get('var1'),time());
4
echo $f3->get('var2',array($timestamp1,$timestamp2));//shorthand for $f3->format($f3->get('var2'),$timestamp1,$timestamp2);
Copied!
Обратите внимание: если кэширование включено и var ранее не был определен во время выполнения, F3 пытается загрузить var из кэша при использовании get().
Доступ к массивам очень прост. Вы также можете использовать точечную нотацию JS'myarray.bar', что значительно облегчает чтение и запись.
1
$f3->set('myarray',
2
array(
3
0 => 'value_0',
4
1 => 'value_1',
5
'bar' => 123,
6
'foo' => 'we like candy',
7
'baz' => 4.56,
8
)
9
);
10
11
echo $f3->get('myarray[0]'); // value_0
12
echo $f3->get('myarray.1'); // value_1
13
echo $f3->get('myarray.bar'); // 123
14
echo $f3->get('myarray["foo"]'); // we like candy
15
echo $f3->get('myarray[baz]'); // 4.56, notice alternate use of single, double and no quotes
16
// a new ArrayAccess syntax is also possible since v3.4.0
17
echo $f3->myarray['foo'];
18
echo $f3['myarray']['baz'];
Copied!

синхронизация

Синхронизируйте глобальную переменную PHP с соответствующим ключом улья
1
array sync ( string $key )
Copied!
Использование:
1
$f3->sync('SESSION'); // ensures PHP global var SESSION is the same as F3 variable SESSION
Copied!
F3 автоматически синхронизирует следующие PHP глобалы: GET, POST, COOKIE, REQUEST, SESSION, FILES, SERVER, ENV

ссылка

Получить ссылку на ключ улья и его содержимое
1
mixed &ref ( string $key [, bool $add = true, mixed $var = null ] )
Copied!
Использование:
1
$f3->set('name','John');
2
$b = &$f3->ref('name'); // $b is a reference to framework variable 'name' , not a copy
3
$b = 'Chuck'; // modifiying the reference updates the framework variable 'name'
4
echo $f3->get('name'); // Chuck
Copied!
Вы также можете добавить несуществующие ключи улья, элементы массива и свойства объекта, если 2-й аргумент по умолчанию имеет значение TRUE.
1
$new = &$f3->ref('newVar'); // creates new framework hive var 'newVar' and returns reference to it
2
$new = 'hello world'; // set value of php variable, also updates reference
3
echo $f3->get('newVar'); // hello world
4
5
$new = &$f3->ref('newObj->name');
6
$new = 'Sheldon';
7
echo $f3->get('newObj')->name; // Sheldon
8
echo $f3->get('newObj->name'); // Sheldon
9
echo $f3->get('newObj.name'); // Sheldon
10
11
$a = &$f3->ref('hero.name');
12
$a = 'SpongeBob';
13
// or
14
$b = &$f3->ref('hero'); // variable
15
$b['name'] = 'SpongeBob'; // becomes array with key 'name'
16
$my_array = $f3->get('hero');
17
echo $my_array['name']; // 'SpongeBob'
Copied!
Если 2-й аргумент $addравенfalse, то он просто возвращает содержимое ключа улья только для чтения. Это поведение используется get (). Если ключ улья не существует, он возвращает значение NULL.
Используйте 3-й аргумент, если вы хотите найти ссылку в своем собственном массиве / объекте, а не в улье.
1
$fruitQty = ["Bananas"=>5, "Oranges"=>2, "Apples"=>42, "Mangos"=>1];
2
$apples = &$f3->ref("Apples", true, $fruitQty); // References $fruitQty["Apples"]
3
$apples = 10;
4
5
echo $fruitQty["Apples"]; // 10
Copied!
Таким образом, вы также можете использовать точечную нотацию с вашими собственными объектами.

существует

Возвращает TRUE, если ключ улья установлен (или возвращает метку времени и TTL, если кэширован)
1
bool exists ( string $key [, mixed &$val=NULL] )
Copied!
Эта existsфункция также проверяет внутреннее хранилище кэша, когда ключ не найден в улье. Если ключ найден в кэше, он затем возвращается array ( $timestamp, $ttl ).Обратите внимание: exists использует функцию PHP `isset ()`, чтобы определить, установлен ли ключ улья и не равен нулю.
Использование:
1
$f3->set('foo','value');
2
3
$f3->exists('foo'); // true
4
$f3->exists('bar'); // false, was not set above
Copied!
1
// Synched hive keys with PHP global variables
2
$f3->exists('COOKIE.userid');
3
$f3->exists('SESSION.login');
4
$f3->exists('POST.submit');
Copied!
Обратите внимание: если вы проверяете наличие ключа сеанса, сеанс запускается автоматически.
$valЭтот аргумент можно также использовать для извлечения содержимого ключа hive. Это может сэкономить дополнительный getзвонок.
1
if ($f3->exists('foo',$value)) {
2
echo $value; // bar
3
}
Copied!

лишенный

Возвращает TRUE, если ключ hive пуст и не кэшируется
1
bool devoid ( string $key )
Copied!
Эта devoidфункция также проверяет внутреннее хранилище кэша, если ключ не был найден в улье.Обратите внимание: devoid использует функцию PHP `empty ()`, чтобы определить, является ли ключ hive пустым и не кэшируется.
Использование:
1
$f3->set('foo','');
2
$f3->set('bar',array());
3
$f3->set('baz',array(),10);
4
5
$f3->devoid('foo'); // true
6
$f3->devoid('bar'); // true
7
$f3->devoid('baz'); // false
Copied!

Очистить

Unset Hive key, ключ больше не существует
1
void clear ( string $key )
Copied!
Чтобы полностью удалить ключ улья и его значение из памяти:
1
$f3->clear('foobar');
2
$f3->clear('myArray.param1'); // removes key `param1` from array `myArray`
Copied!
Если данный ключ улья был кэширован ранее, он также будет очищен от кэша.
Еще несколько специальных применений:
1
$f3->clear('SESSION'); // destroys the user SESSION
2
$f3->clear('COOKIE.foobar'); // removes a cookie
3
$f3->clear('CACHE'); // clears all cache contents
Copied!
Обратите внимание: очистка всего содержимого кэша сразу не поддерживается для бэкенда кэша XCache

mset

Многопеременное присвоение с использованием ассоциативного массива
1
void mset ( array $vars [, string $prefix = '' [, integer $ttl = 0 ]] )
Copied!
Использование:
1
$f3->mset(
2
array(
3
'var1'=>'value1',
4
'var2'=>'value2',
5
'var3'=>'value3',
6
)
7
);
8
9
echo $f3->get('var1'); // value1
10
echo $f3->get('var2'); // value2
11
echo $f3->get('var3'); // value3
Copied!
Вы можете добавить все имена ключей, используя 2-й аргумент $prefix.
1
$f3->mset(
2
array(
3
'var1'=>'value1',
4
'var2'=>'value2',
5
'var3'=>'value3',
6
),
7
'pre_'
8
);
9
10
echo $f3->get('pre_var1'); // value1
11
echo $f3->get('pre_var2'); // value2
12
echo $f3->get('pre_var3'); // value3
Copied!
Чтобы кэшировать все Вары, установите положительное числовое целое значение $ttlв секундах.

улей

Возвращает все содержимое Улья в виде массива
1
array hive ()
Copied!
Использование:
1
printf ("A Busy Hive: <pre>%s</pre>", var_export( $f3->hive(), true ) );
Copied!

Копировать

Скопируйте содержимое переменной hive в другую переменную
1
mixed copy ( string $src, string $dst )
Copied!
Возвращает доступную для записи ссылку на новый $dstключ улья. Если $dstон уже существует в улье, он просто перезаписывается.
Использование:
1
$f3->set('foo','123');
2
$f3->set('bar','barbar');
3
$bar = $f3->copy('foo','bar'); // bar = '123'
4
$bar = 456;
5
$f3->set('foo','789');
6
echo $f3->get('bar'); // '456'
Copied!

конкат

Связать строку с переменной Hive string
1
string concat ( string $key, string $val )
Copied!
Возвращает результат конкатенации. Примечание: если $keyон не существует в улье, то он автоматически создается в улье.
Использование:
1
$f3->set('count', 99);
2
$f3->set('item', 'beer');
3
$text = $f3->concat('count', ' bottles of '.$f3->get('item'));
4
$text .= ' on the wall';
5
$f3->concat('wall', $f3->get('count')); // new 'wall' hive key is created
6
echo $f3->get('wall'); // 99 bottles of beer on the wall
Copied!

сальто

Ключи подкачки и значения переменной массива улья
1
array flip ( string $key )
Copied!
Использование:
1
$f3->set('data', array(
2
'foo1' => 'bar1',
3
'foo2 '=> 'bar2',
4
'foo3' => 'bar3',
5
));
6
$f3->flip('data');
7
8
print_r($f3->get('data'));
9
/* output:
10
Array
11
(
12
[bar1] => foo1
13
[bar2] => foo2
14
[bar3] => foo3
15
)
16
*/
Copied!

толкать

Добавить элемент в конец переменной массива улья
1
mixed push ( string $key, mixed $val )
Copied!
Использование:
1
$f3->set('fruits',array(
2
'apple',
3
'banana',
4
'peach',
5
));
6
$f3->push('fruits','cherry');
7
8
print_r($f3->get('fruits'));
9
/* output:
10
Array
11
(
12
[0] => apple
13
[1] => banana
14
[2] => peach
15
[3] => cherry
16
)
17
*/
Copied!

хлопок

Удалить последний элемент переменной массива улья
1
mixed pop ( string $key )
Copied!
Использование:
1
$f3->set('fruits',array(
2
'apple',
3
'banana',
4
'peach'
5
));
6
$f3->pop('fruits'); // returns "peach"
7
8
print_r($f3->get('fruits'));
9
/* output:
10
Array
11
(
12
[1] => apple
13
[2] => banana
14
)
15
*/
Copied!

unshift

Добавить элемент в начало переменной массива hive
1
mixed unshift ( string $key, string $val )
Copied!
Использование:
1
$f3->set('fruits',array(
2
'apple',
3
'banana',
4
'peach'
5
));
6
$f3->unshift('fruits','cherry');
7
8
print_r($f3->get('fruits'));
9
/* output:
10
Array
11
(
12
[0] => cherry
13
[1] => apple
14
[2] => banana
15
[3] => peach
16
)
17
*/
Copied!

сдвиг

Удалить первый элемент переменной массива улья
1
array|NULL shift ( string $key )
Copied!
Возвращает переменную массива улья, сдвинутую влево, или NULLесли переменная массива улья пуста или не является массивом.Обратитевнимание: shiftиспользуйте функцию PHP array_shift(). Это означает, что все числовые ключи массива переменной Hive array будут изменены, чтобы начать отсчет с нуля, в то время как литеральные ключи не будут затронуты
Пример:
1
$f3->set('fruits', array(
2
'crunchy'=>'apples',
3
'11'=>'bananas',
4
'6'=>'kiwis',
5
'juicy'=>'peaches'
6
));
7
$f3->shift('fruits'); // returns "apples"
8
print_r($f3->get('fruits'));
9
/* output:
10
Array
11
(
12
[0] => bananas
13
[1] => kiwis
14
[juicy] => peaches
15
)
16
*/
Copied!

поглощать

Объединить массив с переменной массива улья
1
array merge ( string $key, array $src [, bool $keep = FALSE])
Copied!
Возвращает результирующий массив слияния. (Не касается значения ключа улья)
Пример:
1
$f3->set('foo', array('blue','green'));
2
$bar = $f3->merge('foo', array('red', 'yellow'));
3
4
/* $bar now is:
5
array (size=4)
6
[0] => string 'blue' (length=4)
7
[1] => string 'green' (length=5)
8
[2] => string 'red' (length=3)
9
[3] => string 'yellow' (length=6)
10
*/
Copied!
Если параметр $keepимеет значение TRUE, источник $keyв улье также обновляется.

расширять

Расширение переменной массива hive со значениями по умолчанию из $src
1
array extend ( string $key, array $src [, bool $keep = FALSE])
Copied!
Этот метод предоставляет простой способ добавить некоторые значения по умолчанию в массив:
1
$f3->set('settings',[
2
'foo'=> 1,
3
'bar'=> 'baz',
4
'colors'=>[
5
'blue'=>1,
6
'green'=>2
7
]
8
]);
9
$f3->set('defaults',[
10
'foo'=>0,
11
'zzz'=>2,
12
'colors'=>[
13
'red'=>3,
14
'blue'=>4
15
],
16
]);
17
$settings = $f3->extend('settings','defaults');
18
print_r($settings);
19
20
/*
21
Array (
22
[foo] => 1
23
[zzz] => 2
24
[colors] => Array (
25
[red] => 3
26
[blue] => 1
27
[green] => 2
28
)
29
[bar] => baz
30
)
31
*/
Copied!
Если параметр $keepимеет значение TRUE, источник $keyв улье также обновляется.

Кодирование И Преобразование

fixslashes

Преобразование обратной косой черты в косую черту
1
string fixslashes ( string $str )
Copied!
Использование:
1
$filepath = __FILE__; // \www\mysite\myfile.txt
2
$filepath = $f3->fixslashes($filepath); // /www/mysite/myfile.txt
Copied!

расщеплять

Разделенная запятая, точка с запятой или разделенная трубой строка
1
array split ( string $str [, $noempty = TRUE ] )
Copied!
Использование:
1
$data = 'value1,value2;value3|value4';
2
print_r($f3->split($data));
3
/* output:
4
Array
5
(
6
[0] => value1
7
[1] => value2
8
[2] => value3
9
[3] => value4
10
)
11
*/
Copied!
NB: по умолчанию пустые значения отфильтровываются. Установите $noemptyзначение FALSE, чтобы предотвратить такое поведение.

stringify

Преобразование PHP-выражения/значения в сжатую экспортируемую строку
1
string stringify ( mixed $arg [, array $stack = NULL ] )
Copied!
Эта функция позволяет преобразовать любое выражение PHP, значение, массив или любой объект в сжатую и экспортируемую строку.
Этот $detailпараметр определяет, следует ли рекурсивно входить во вложенные объекты или нет.
Пример с простым 2D массивом:
1
$elements = array('water','earth','wind','fire');
2
$fireworks = array($elements, shuffle($elements), array_flip($elements));
3
echo $f3->stringify($fireworks);
4
// Outputs e.g.:
5
"[['water','earth','wind','fire'],true,['earth'=>0,'water'=>1,'wind'=>2,'fire'=>3]]"
Copied!
1
$car = new stdClass();
2
$car->color = 'green';
3
$car->location = array('35.360496','138.727798');
4
echo $f3->stringify($car);
5
// Outputs e.g.:
6
"stdClass::__set_state(['color'=>'green','location'=>['35.360496','138.727798']])"
Copied!

csv

Сглаживайте значения массива и возвращайте их в виде строки CSV
1
string csv ( array $args )
Copied!
Использование:
1
$elements = array('water','earth','wind','fire');
2
echo $f3->csv($elements); // displays 'water','earth','wind','fire' // including single quotes
Copied!

верблюжий футляр

Преобразование строки snake_case в camelCase
1
string camelcase ( string $str )
Copied!
Использование:
1
$str_s_c = 'user_name';
2
$f3->camelcase($str_s_c); // returns 'userName'
Copied!

змеиная кожа

Преобразование строки camelCase в snake_case
1
string snakecase ( string $str )
Copied!
Использование:
1
$str_CC = 'userName';
2
$f3->snakecase($str_CC); // returns 'user_name'
Copied!

знак

Возвращает -1, если указанное число отрицательно, 0, если ноль, или 1, если число положительное
1
int sign ( mixed $num )
Copied!

гашиш

Генерация 64-битного/базового хэша 36
1
string hash ( string $str )
Copied!
Генерирует хэш для заданной строки (длина от 11 до 13)
Пример:
1
$f3->hash('foobar'); // returns '3vrllw03cko4s' (length=13)
Copied!

base64

Возврат эквивалента в кодировке Base64
1
string base64 ( string $data, string $mime )
Copied!
Пример:
1
echo $f3->base64('<h1>foobar</h1>','text/html');
2
// data:text/html;base64,PGgxPmZvb2JhcjwvaDE+
Copied!

зашифровать

Преобразование специальных символов в HTML-объекты
1
string encode ( string $str )
Copied!
Кодирует такие символы, как & < >и другие символы, основываясь на настройках кодирования ваших приложений. (по умолчанию: UTF-8)
Пример:
1
echo $f3->encode("we <b>want</b> 'sugar & candy'");
2
// we &lt;b&gt;want&lt;/b&gt; 'sugar &amp; candy'
Copied!

расшифровывать

Преобразование специальных HTML-сущностей обратно в символы
1
string decode ( string $str )
Copied!
Пример:
1
echo $f3->decode("we &lt;b&gt;want&lt;/b&gt; 'sugar &amp; candy'");
2
// we <b>want</b> 'sugar & candy'
Copied!

чистый

Удалите HTML-теги (кроме перечисленных) и непечатаемые символы, чтобы смягчить атаки XSS / code injection
1
string clean ( mixed $var [, string $tags = NULL ] )
Copied!
$var может быть либо аstring, либо Ан array. В последнем случае он будет рекурсивно пройден, чтобы очистить каждый элемент.
$tags определяет список (в соответствии с синтаксисом разделения) разрешенных html-тегов, которые не будут удалены.Совет: рекомендуется использовать эту функцию для дезинфекции введенных формуляров.
Примеры:
1
$foo = "99 bottles of <b>beer</b> on the wall. <script>alert('scripty!')</script>";
2
echo $f3->clean($foo); // "99 bottles of beer on the wall. alert('scripty!')"
Copied!
1
$foo = "<h1><b>nice</b> <span>news</span> article <em>headline</em></h1>";
2
$h1 = $f3->clean($foo,'h1,span'); // <h1>nice <span>news</span> article headline</h1>
Copied!

скраб

Аналогично clean (), за исключением того, что переменная передается по ссылке
1
string scrub ( mixed &$var [, string $tags = NULL ] )
Copied!
Пример:
1
$foo = "99 bottles of <b>beer</b> on the wall. <script>alert('scripty!')</script>";
2
$bar = $f3->scrub($foo);
3
echo $foo; // 99 bottles of beer on the wall. alert('scripty!')
Copied!

сериализовать

Возвращаемое строковое представление значения PHP
1
string serialize ( mixed $arg )
Copied!
В зависимости от системной переменной сериализатора этот метод преобразует что-либо в переносимое строковое выражение. Возможные значения-igbinary и php. F3 проверяет при запуске, доступен ли igbinary, и определяет его приоритетность, так как расширение igbinary работает намного быстрее и использует меньше дискового пространства для сериализации. Проверьте igbinary на github.

несериализовать

Возвращает значение PHP, полученное из строки
1
string unserialize ( mixed $arg )
Copied!
См. раздел сериализация для дальнейшего описания.

Локализация

Примечание: F3 следует правилам форматирования ICU , не требуя наличия модуля PHP intl.

формат

Возвращаемая форматированная строка с учетом локали
1
string format( string $format [, mixed $arg0 [, mixed $arg1...]] )
Copied!
$formatСтрока содержит один или несколько заполнителей, идентифицируемых индексом позиции, заключенным в фигурные скобки, причем начальный индекс равен 0. Заполнители заменяются значениями предоставленных аргументов.
1
echo $f3->format('Name: {0} - Age: {1}','John',23); //outputs the string 'Name: John - Age: 23'
Copied!
Форматирование может стать более точным, если ожидаемый тип указан в заполнителях.
В настоящее время поддерживаются следующие типы:
  • Дата
  • дата, короткая
  • дата, длинная
  • дата, обычай, {exp}
  • время
  • время, короткое
  • время, обычай, {exp}
  • число, целое число
  • число, валюта
  • число, валюта, int
  • число, валюта, {char}
  • число, в процентах
  • число, десятичное число, {int}
  • множественное число, {exp}
1
echo $f3->format('Current date: {0,date} - Current time: {0,time}',time());
2
//outputs the string 'Current date: 04/12/2013 - Current time: 11:49:57'
3
echo $f3->format('Created on: {0,date,custom,%A, week: %V }', time());
4
//outputs the string 'Created on: Monday, week 45'
5
echo $f3->format('{0} is displayed as a decimal number while {0,number,integer} is rounded',12.54);
6
//outputs the string '12.54 is displayed as a decimal number while 13 is rounded'
7
echo $f3->format('Price: {0,number,currency}',29.90);
8
//outputs the string 'Price: $29.90'
9
echo $f3->format('Percentage: {0,number,percent}',0.175);
10
//outputs the string 'Percentage: 18%' //Note that the percentage is rendered as an integer
11
echo $f3->format('Decimal Number: {0,number,decimal,2}', 0.171231235);
12
//outputs the string 'Decimal Number: 0,17'
Copied!
Синтаксис множественного числа немного менее прост, так как он позволяет связать различные выходные данные в зависимости от количества входных данных.
Синтаксис множественного типа должен 0, plural,начинаться со списка ключевых слов множественного числа, связанных с требуемым результатом. Допустимые ключевые слова: "* ноль*", " * один*", "* два * " и " *другой*".
Кроме того, вы можете вставить соответствующую цифру в выходные строки благодаря #знаку, который будет автоматически заменен соответствующим числом, как показано в примере ниже:
1
$cart_dialogs= '{0, plural,'.
2
'zero {Your cart is empty.},'.
3
'one {One (#) item in your cart.},'.
4
'two {A pair of items in your cart.},'.
5
'other {There are # items in your cart.}
6
}';
7
8
echo $f3->format($cart_dialogs,0); // displays 'Your cart is empty.'
9
echo $f3->format($cart_dialogs,1); // displays 'One (1) item in your cart.'
10
echo $f3->format($cart_dialogs,2); // displays 'A pair of items in your cart.'
11
echo $f3->format($cart_dialogs,3); // displays 'There are 3 items in your cart.'
Copied!
Каждое ключевое слово множественного числа является необязательным, и вы можете, например, опустить ключевое слово множественного числа "два", если "другой" подходит для этого случая. Конечно, если вы опустите их все, то будут отображаться только цифры. Как правило, держите хотя бы ключевое слово "другое" во множественном числе в качестве запасного варианта.
Автоматическое форматирование переменных ульяПриятно помнить: F3, для вашего удобства и для того, чтобы чрезвычайно облегчить использование форматирования в ваших шаблонах, вы можете извлекать и форматировать переменные из улья с помощью одной команды:
Пример:
1
$f3->set('a_books_story',
2
'{0, plural,'.
3
'zero {There is n#thing on the table.},'.
4
'one {A book is on the table.},'.
5
'two {Two (#) books are on this table.},'.
6
'other {There are # books on the table.}'.
7
'}'
8
);
9
echo $f3->get('a_books_story',0); // displays 'There is n0thing on the table.'
10
echo $f3->get('a_books_story',1); // displays 'A book is on the table.'
11
echo $f3->get('a_books_story',2); // displays 'Two (2) books are on this table.'
12
echo $f3->get('a_books_story',7); // displays 'There are 7 books on the table.'
Copied!

язык

Назначение / автоматическое определение языка
1
string language ( string $code )
Copied!
Эта функция используется при загрузке фреймворка для автоматического определения возможного языка пользователя, просматривая заголовки HTTP-запросов, в частности заголовок Accept-Language, отправляемый браузером.
Используйте системную переменную LANGUAGE для получения и установки языков, так как она также обрабатывает зависимости, такие как установка локалей с помощью php setlocale(LC_ALL,...) и изменение файлов словаря. Резервная системная переменная определяет язык по умолчанию, который будет использоваться, если ни один из обнаруженных языков не доступен в виде файла словаря.
Пример:
1
$f3->get('LANGUAGE'); // 'de-DE,de,en-US,en'
2
$f3->set('LANGUAGE', 'es-BR,es');
3
$f3->get('LANGUAGE'); // 'es-BR,es,en' the fallback language is added at the end of the list
Copied!
Языковая переменная принимает тот же тип строки, что и заголовок HTTP Accept-Language, который представляет собой разделенный запятыми список 2-буквенных кодов языков, за которыми, возможно, следуют дефис и 2-буквенный код страны. NB: несмотря на то, что локали POSIX используют подчеркивание в качестве разделителя (es_BR.UTF-8), вы должны определить переменную языка с дефисом (es-BR). Файлы словарей следуют тому же правилу (es-BR.php / es-BR.ini).
Язык системы
Чтобы гарантировать, что метод format и другие функции php, ориентированные на локализацию, работают так, как ожидалось, эта функция автоматически загружает системную локализацию. Например:
1
$f3->set('ENCODING','UTF-8');
2
$f3->set('LANGUAGE','it-IT');// the locale it_IT.UTF-8 will be automatically loaded using setlocale
Copied!
Еще несколько примеров:
1
$f3->LANGUAGE='en' => F3 will try to load 2 locales:
2
en.UTF-8
3
en
4
$f3->LANGUAGE='en-US' => F3 will try to load 4 locales:
5
en_US.UTF-8
6
en_US
7
en.UTF-8
8
en
9
$f3->LANGUAGE='en-US,en-GB' => F3 will try to load 6 locales:
10
en_US.UTF-8
11
en_US
12
en_GB.UTF-8
13
en_GB
14
en.UTF-8
15
en
Copied!
NB: загружается первая локаль, найденная на сервере. Убедитесь, что на вашем сервере установлены все локали, которые вы хотите поддерживать в своем приложении. На большинстве машин linux вы можете проверить это с помощью locale -aи установить новые локали dpkg-reconfigure locales. Некоторые конфигурации веб-серверов apache, возможно, нуждаются в перезапуске после этого, чтобы работать с новыми локалями.

лексикон

Перенос записей лексикона в улей
1
array lexicon ( string $path )
Copied!
Эта функция используется при загрузке фреймворка для автоматической загрузки файлов словаря, расположенных в пределах определенного пути в LOCALESvar.
1
$f3->set('LOCALES','dict/');
Copied!
Файл словаря может быть php-файлом, возвращающим парный ассоциативный массив ключ-значение, или an .конфигурационный файл в формате ini-style. Ознакомьтесь с руководством по языковым файлам здесь.

Маршрутизация

псевдоним

Соберите url-адрес из псевдонима
1
string alias ( string $name [, array|string $params = array() [, array|string $query = array() ]] )
Copied!
Пример:
1
$f3->route('GET @complex:/resize/@format/*/sep/*','App->nowhere');
2
$f3->alias('complex','format=20x20,2=foo/bar,3=baz.gif');
3
$f3->alias('complex',array('format'=>'20x20',2=>'foo/bar',3=>'baz.gif'));
4
// Both examples return '/resize/20x20/foo/bar/sep/baz.gif'
Copied!

строить

Замените маркированный URL-адрес значениями токенов текущего маршрута
1
string build ( string $url [, array $params = array() ] )
Copied!
Пример:
1
// for instance the route is '/subscribe/@channel' with PARAMS.channel = 'fatfree'
2
3
echo $f3->build('@channel'); // displays 'fatfree'
4
echo $f3->build('/get-it/now/@channel'); // displays '/get-it/now/fatfree'
5
echo $f3->build('/subscribe/@channel'); // displays '/subscribe/fatfree'
Copied!
Если вы хотите конкретно определить маркеры в данном $urlслучае , вы можете использовать $paramsаргумент для этого:
1
$f3->build('/resize/@format/*/sep/*',array(
2
'format'=>'200x200',// 1=>'200x200' also works
3
2=>'foo/bar',
4
3=>'baz.gif'
5
));
6
// returns: /resize/200x200/foo/bar/sep/baz.gif
Copied!

издеваться

Имитация HTTP-запроса
1
mixed mock ( string $pattern [, array $args = NULL [, array $headers = NULL [, string $body = NULL ]]] )
Copied!
Это эмулирует HTTP-запрос, основанный на глаголе и ресурсе, определенном$pattern.
  • $args экспортируется как глобальная переменная соответствующего глагола ($_GET, $_POSTили$_REQUEST)
  • $headers экспортируется как глобальные HTTP заголовки ($_SERVER[HTTP_…])
  • Тело HTTP-запроса $bodyэкспортируется как BODYпеременная улья для глаголов, не равных GETor HEAD. If $bodyне определен, $argsполучает URL-кодировку и экспортируется как BODY
  • Добавление [ajax]к $patternиздевательствам над вызовами AJAX
  • Добавление [sync]к $patternиздевательствам обычных (синхронных) вызовов
  • Добавление [cli]к $patternвызовам командной строки mocks (CLI)
  • Именованные маршруты и токены являются допустимыми ресурсами
Базовый пример использования:
1
$f3->mock('GET /page/view [ajax]');
Copied!
Базовый пример использования с именованным маршрутом и токеном:
1
$f3->route('GET @grub:/food/@id', /* … */);
2
$f3->mock('GET @grub(@id=bread)');
Copied!
Модульный тест как пример расширенного использования:
1
$f3->route('GET|POST|PUT @grub:/food/@id/@quantity', /* … */);
2
$f3->mock('POST /food/sushki/134?a=1',array('b'=>2));
3
$test->expect(
4
$_GET==array('a'=>1) && $_POST==array('b'=>2) && $_REQUEST==array('a'=>1,'b'=>2) && $f3->get('BODY')=='b=2',
5
'Request body and superglobals $_GET, $_POST, $_REQUEST correctly set on mocked POST'
6
);
Copied!

разбор

Проанализируйте строку, содержащую пары ключ-значение, и используйте их в качестве маркеров маршрутизации
1
NULL parse ( string $str )
Copied!
Пример:
1
$f3->parse('framework=f3 , speed=fast , features=full');
2
echo $f3->get('PARAMS.framework'); // 'f3'
3
echo $f3->get('PARAMS.speed'); // 'fast'
Copied!

маршрут

Привязать шаблон маршрута к заданному обработчику
1
null route ( string|array $pattern, callback $handler [, int $ttl = 0 [, int $kbps = 0 ]] )
Copied!
Базовый пример использования:
1
$f3->route('POST /login','AuthController->login');
Copied!
Схема Маршрута
$patternVar описывает шаблон маршрута, состоящий из типа запроса и URI запроса, разделенных пробелом char.
Глаголы
Возможные определения типа запроса (глагола), которые будет обрабатывать F3 , следующие: GET, POST, PUT, DELETE, HEAD, PATCH, CONNECT.
Вы можете объединить несколько глаголов, чтобы использовать один и тот же обработчик маршрута для всех них. Просто разделите их обуглившейся трубой, например GET|POST.
Жетоны
URI запроса может содержать один или несколько маркеров, предназначенных для определения динамических маршрутов. Маркеры обозначаются @символом перед их именем и могут быть дополнительно заключены в одиночные фигурные скобки { }. Смотрите эти примеры:
1
$f3->route('GET|HEAD /@page','PageController->display'); // ex: /about
2
$f3->route('POST /@category/@thread','ForumThread->saveAnswer'); // /games/battlefield3
3
$f3->route('GET /image/@[email protected]/@file','ImageCompressor->render'); // /image/300-200/mario.jpg
4
$f3->route('GET /image/{@width}x{@height}/@file','ImageCompressor->render'); // /image/300x200/mario.jpg
Copied!
После обработки URI входящего запроса (инициированного run) вы найдете значение каждого из этих токенов в PARAMSсистемной переменной в виде именованного ключа, например $f3->get('PARAMS.file'). /- Марио.jpg'Обратите внимание: маршруты и соответствующие им глаголы сгруппированы по их шаблону URL. Статические маршруты предшествуют маршрутам с динамическими маркерами или подстановочными знаками.
Подстановочный знак
Вы также можете определить подстановочные знаки (/*) в вашем URI маршрутизации. Кроме того, вы можете использовать их в сочетании с @токенами.
1
$f3->route('GET /path/*/@page', function($f3,$params) {
2
// called URI: "/path/cat/page1"
3
// $params is the same as $f3->get('PARAMS');
4
$params[0]; // contains the full route path. "/path/cat/page"
5
$params[1]; // and further numeric keys in PARAMS hold the catched wildcard paths and tokens. in this case "cat"
6
$params['page']; // is your last segment, in this case "page1"
7
});
Copied!
Обратите внимание: var` PARAMS ' содержит все токены в виде именованного ключа, а также все токены и подстановочные знаки в виде числового ключа, в зависимости от их порядка появления.
Приведенный выше маршрут также работает с подкатегориями. Просто позвонить /path/cat/subcat/page1
1
$params[1]; // now contains "/cat/subcat"
Copied!
Он даже работает с некоторыми другими подуровнями. Вам просто нужно разнести это значение с /помощью разделителя-для обработки ваших подкатегорий. Что-то вроде /path/*/@pagetitle/@pagenumэтого тоже довольно просто.
Это становится сложным, когда вы пытаетесь использовать более одного подстановочного знака, потому что только первый /*подстановочный знак может содержать неограниченные сегменты пути. Любые дальнейшие подстановочные знаки могут содержать только одну часть между косыми чертами (/). Так что постарайтесь, чтобы все было просто.
Группы
Можно назначить несколько маршрутов одному и тому же обработчику маршрутов, используя массив маршрутов внутри $pattern. Это будет выглядеть так:
1
$f3->route(
2
array(
3
'GET /archive',
4
'GET /archive/@year',
5
'GET /archive/@year/@month',
6
'GET /archive/@year/@month/@day'
7
),
8
function($f3,$params){
9
$params+=array('year'=>2013,'month'=>1,'day'=>1); //default values
10
//etc..
11
}
12
);
Copied!
Именованные Маршруты
Так F3 v3.2.0как вы также можете присвоить имя своим маршрутам. Поэтому следуйте этой схеме:
1
$f3->route('GET @beer_list: /beer', 'Beer->list');
Copied!
Имена вставляются после глагола маршрута и предваряются символом@. Все именованные маршруты могут быть доступны системной переменной ALIASES для дальнейшей обработки в шаблонах или для перенаправления. Дополнительную информацию см. В руководстве пользователя по созданию именованных маршрутов.
Кроме того вы можете использовать существующее имя маршрута для сокращения дополнительных определений маршрута:
1
$f3->route('GET @beer_details: /beer/@id', 'Beer->get');
2
$f3->route('POST @beer_details', 'Beer->saveComment');
3
$f3->route('PUT @beer_details', 'Beer->savePhoto');
Copied!
обработчик маршрута
Это может быть вызываемый метод класса, например 'Foo->bar' или 'Foo::bar', имя функции или анонимная функция.
F3 автоматически передает экземпляр фреймворка и маркеры маршрута классам контроллеров обработчиков маршрутов. Например:
1
$f3->set('hello','world');
2
$f3->route('GET /foo/@file','Bar->baz');
3
4
class Bar {
5
function baz($f3,$args) {//<-- $f3 is the framework instance, $args are the route tokens
6
echo $f3->get('hello');
7
echo $args['file'];
8
}
9
}
Copied!
Кэширование
3-й аргумент $ttlопределяет время кэширования в секундах. Установка этого аргумента в положительное значение вызовет функцию expire для установки метаданных кэша в заголовке HTTP-ответа. Он также кэширует ответ маршрута, но кэшируются только запросы GET и HEAD.
Если CACHEон выключен,$ttlто будет управлять кэшем браузера только с помощью метаданных заголовка expire. Если CACHEон включен и $ttlдля текущего обработчика URI запроса установлено положительное значение, F3 дополнительно кэширует выходные данные для этой страницы и обновляет их по $ttlистечении срока действия. Подробнее об этом читайте здесь и здесь.
Дросселирование Полосы Пропускания
Установите 4-й аргумент $kbpsна желаемое ограничение скорости, чтобы включить дросселирование. Подробнее об этом читайте в руководстве пользователя.

переадресовать

Перенаправление на указанный URI
1
null reroute ( [ string|array $url = NULL [, bool $permanent = FALSE [, bool $die = TRUE ]]] )
Copied!
Пример использования:
1
// an old page is moved permanently
2
$f3->route('GET|HEAD /obsoletepage', function($f3) {
3
$f3->reroute('/newpage', true);
4
});
5
6
// whereas a Post/Redirect/Get pattern would just redirect temporarily
7
$f3->route('GET|HEAD /login', 'AuthController->viewLoginForm');
8
$f3->route('POST /login', function($f3) {
9
if( AuthController->checkLogin == true )
10
$f3->reroute('/members', false);
11
else
12
$f3->reroute('/login', false);
13
});
14
15
// if no $url parameter is set, it'll reroute to the current route with GET verb
16
$f3->route('POST /search', function($f3) {
17
// back to search form, if an empty term was submitted
18
if ($f3->devoid('POST.search_term'))
19
$f3->reroute();
20
});
21
22
// we can also reroute to external URLs
23
$f3->route('GET /partners', function($f3) {
24
$f3->reroute('http://externaldomain.com');
25
});
26
27
// it's also possible to reroute to named routes
28
$f3->route('GET @beer_list: /beer', 'Beer->list');
29
$f3->route('GET /old-beer-page', function($f3) {
30
$f3->reroute('@beer_list');
31
});
32
33
// even with dynamic parameter in your named route
34
$f3->route('GET @beer_producers: /beer/@country/@village', 'Beer->byproducer');
35
$f3->route('GET /old-beer-page', function($f3) {
36
$f3->reroute('@beer_producers(@country=Germany,@village=Rhine)');
37
});
38
// but it'll also work with any unnamed tokenized URL
39
$f3->reroute('/beer/@country/@village',TRUE)
Copied!
Когда $urlэто массив, он используется для перенаправления псевдонимов. Вы можете указать имя псевдонима в 1-м элементе массива, его параметры во 2-м и дополнительные элементы запроса в качестве 3-го элемента массива:
1
$f3->reroute(['filter','a=foo,b=bar','time=3']);
2
// or
3
$f3->reroute(['filter',['a'=>'foo','b'=>'bar'],['time'=>3]]);
4