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

улей

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

набор

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

получить

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

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

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

ссылка

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

существует

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

лишенный

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

Очистить

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

mset

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

улей

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

Копировать

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

конкат

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

сальто

Ключи подкачки и значения переменной массива улья
array flip ( string $key )
Использование:
$f3->set('data', array(
'foo1' => 'bar1',
'foo2 '=> 'bar2',
'foo3' => 'bar3',
));
$f3->flip('data');
print_r($f3->get('data'));
/* output:
Array
(
[bar1] => foo1
[bar2] => foo2
[bar3] => foo3
)
*/

толкать

Добавить элемент в конец переменной массива улья
mixed push ( string $key, mixed $val )
Использование:
$f3->set('fruits',array(
'apple',
'banana',
'peach',
));
$f3->push('fruits','cherry');
print_r($f3->get('fruits'));
/* output:
Array
(
[0] => apple
[1] => banana
[2] => peach
[3] => cherry
)
*/

хлопок

Удалить последний элемент переменной массива улья
mixed pop ( string $key )
Использование:
$f3->set('fruits',array(
'apple',
'banana',
'peach'
));
$f3->pop('fruits'); // returns "peach"
print_r($f3->get('fruits'));
/* output:
Array
(
[1] => apple
[2] => banana
)
*/

unshift

Добавить элемент в начало переменной массива hive
mixed unshift ( string $key, string $val )
Использование:
$f3->set('fruits',array(
'apple',
'banana',
'peach'
));
$f3->unshift('fruits','cherry');
print_r($f3->get('fruits'));
/* output:
Array
(
[0] => cherry
[1] => apple
[2] => banana
[3] => peach
)
*/

сдвиг

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

поглощать

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

расширять

Расширение переменной массива hive со значениями по умолчанию из $src
array extend ( string $key, array $src [, bool $keep = FALSE])
Этот метод предоставляет простой способ добавить некоторые значения по умолчанию в массив:
$f3->set('settings',[
'foo'=> 1,
'bar'=> 'baz',
'colors'=>[
'blue'=>1,
'green'=>2
]
]);
$f3->set('defaults',[
'foo'=>0,
'zzz'=>2,
'colors'=>[
'red'=>3,
'blue'=>4
],
]);
$settings = $f3->extend('settings','defaults');
print_r($settings);
/*
Array (
[foo] => 1
[zzz] => 2
[colors] => Array (
[red] => 3
[blue] => 1
[green] => 2
)
[bar] => baz
)
*/
Если параметр $keepимеет значение TRUE, источник $keyв улье также обновляется.

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

fixslashes

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

расщеплять

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

stringify

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

csv

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

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

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

змеиная кожа

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

знак

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

гашиш

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

base64

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

зашифровать

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

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

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

чистый

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

скраб

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

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

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

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

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

Локализация

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

формат

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

язык

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

лексикон

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

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

псевдоним

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

строить

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

издеваться

Имитация HTTP-запроса
mixed mock ( string $pattern [, array $args = NULL [, array $headers = NULL [, string $body = NULL ]]] )
Это эмулирует 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)
  • Именованные маршруты и токены являются допустимыми ресурсами
Базовый пример использования:
$f3->mock('GET /page/view [ajax]');
Базовый пример использования с именованным маршрутом и токеном:
$f3->route('GET @grub:/food/@id', /* … */);
$f3->mock('GET @grub(@id=bread)');
Модульный тест как пример расширенного использования:
$f3->route('GET|POST|PUT @grub:/food/@id/@quantity', /* … */);
$f3->mock('POST /food/sushki/134?a=1',array('b'=>2));
$test->expect(
$_GET==array('a'=>1) && $_POST==array('b'=>2) && $_REQUEST==array('a'=>1,'b'=>2) && $f3->get('BODY')=='b=2',
'Request body and superglobals $_GET, $_POST, $_REQUEST correctly set on mocked POST'
);

разбор

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

маршрут

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

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

Перенаправление на указанный URI
null reroute ( [ string|array $url = NULL [, bool $permanent = FALSE [, bool $die = TRUE ]]] )
Пример использования:
// an old page is moved permanently
$f3->route('GET|HEAD /obsoletepage', function($f3) {
$f3->reroute('/newpage', true);
});
// whereas a Post/Redirect/Get pattern would just redirect temporarily
$f3->route('GET|HEAD /login', 'AuthController->viewLoginForm');
$f3->route('POST /login', function($f3) {
if( AuthController->checkLogin == true )
$f3->reroute('/members', false);
else
$f3->reroute('/login', false);
});
// if no $url parameter is set, it'll reroute to the current route with GET verb
$f3->route('POST /search', function($f3) {
// back to search form, if an empty term was submitted
if ($f3->devoid('POST.search_term'))
$f3->reroute();
});
// we can also reroute to external URLs
$f3->route('GET /partners', function($f3) {
$f3->reroute('http://externaldomain.com');
});
// it's also possible to reroute to named routes
$f3->route('GET @beer_list: /beer', 'Beer->list');
$f3->route('GET /old-beer-page', function($f3) {
$f3->reroute('@beer_list');
});
// even with dynamic parameter in your named route
$f3->route('GET @beer_producers: /beer/@country/@village', 'Beer->byproducer');
$f3->route('GET /old-beer-page', function($f3) {
$f3->reroute('@beer_producers(@country=Germany,@village=Rhine)');
});
// but it'll also work with any unnamed tokenized URL
$f3->reroute('/beer/@country/@village',TRUE)
Когда $urlэто массив, он используется для перенаправления псевдонимов. Вы можете указать имя псевдонима в 1-м элементе массива, его параметры во 2-м и дополнительные элементы запроса в качестве 3-го элемента массива:
$f3->reroute(['filter','a=foo,b=bar','time=3']);
// or
$f3->reroute(['filter',['a'=>'foo','b'=>'bar'],['time'=>3]]);
// equivalent to:
$f3->reroute('@filter(a=foo,b=bar)?time=3');
Этот $dieпараметр можно использовать для отключения немедленного перенаправления, вместо этого скрипт продолжает работу после установки соответствующих заголовков. Это может быть полезно для модульного тестирования.

перенаправлять

Перенаправление маршрута на другой URL-адрес
null redirect ( string|array $pattern, string $url [, bool $permanent = TRUE ] )
Это небольшой метод быстрого доступа между методами route и reroute к определенным маршрутам, которые просто предназначены для перенаправления клиента. $patternАргумент принимает те же значения, что и метод маршрута. Ибо $urlвы можете использовать все, что также будет принято в соответствующем аргументе метода reroute.
Пример использования:
// redirect old pages
$f3->redirect('GET /oldpage', '/newpage');
// jump to absolut URLs
$f3->redirect('GET /external-link', 'http://subdomain.domain.com');
// temporarily redirect to another named route
$f3->redirect('GET /login', '@member_area', false);
// redirect one named route to another
$f3->redirect('GET @member_welcome', '@member_area');
Это также можно настроить в файлах конфигурации в пределах [redirects]раздела.

Карта

Предоставьте интерфейс ReST путем сопоставления команды HTTP методу класса
null map ( string $url, string $class [, int $ttl = 0 [, int $kbps = 0 ]] )
Его синтаксис работает немного похоже на функцию маршрута, но вам не нужно определять метод HTTP-запроса в 1-м аргументе, потому что они сопоставляются как функции в классе, который вы продуцируете в $classаргументе. Подробнее о поддержке REST читайте в руководстве пользователя.
Пример использования:
$f3->map('/news/@item','News');
class News {
function get() {}
function post() {}
function put() {}
function delete() {}
}

бежать

Сопоставьте маршруты с входящим URI и вызовите их обработчик маршрутов
null run ()
Пример использования:
$f3 = require __DIR__.'/lib/base.php';
$f3->route('GET /',function(){
echo "Hello World";
});
$f3->run();
После обработки URI входящего запроса шаблон маршрутизации, соответствующий этому URI, сохраняется в PATTERNvar, текущий URI HTTP-запроса-в URIvar, а метод запроса-в VERBvar. PARAMSVar будет содержать все маркеры в виде именованных ключей, а также все маркеры и подстановочные знаки в виде цифровых ключей, в зависимости от их порядка появления.
Генерируйте ошибку 404, когда маркированный класс не существует.
Обратите внимание: если статический и динамический шаблон маршрута совпадают с текущим URI, то статический шаблон маршрута имеет приоритет.

вызов

Выполнить обратный вызов/крючки (поддерживает формат 'class - >method' )
mixed|false call ( callback $func [, mixed $args = NULL [, string $hooks = '' ]] )
Этот метод предоставляет возможность вызывать обратные вызовы и их аргументы. F3 распознает их как допустимые обратные вызовы:
  • Анонимные / лямбда-функции (они же замыкания)
  • array('class','method')