BASE

Базовый класс представляет собой ядро фреймворка. Он содержит все необходимое для запуска простого приложения. Файл base.php также включает в себя основные классы Cache , Prefab , View , ISO и Registry, чтобы уменьшить ненужные дисковые операции ввода-вывода для оптимальной производительности.

Смело удаляйте все остальные файлы в каталоге lib/, если все, что вам нужно, - это основные функции, предоставляемые этим пакетом.

Пространство имен: \ Расположение файла:lib/base.php

HIVE

HIVE («Улей») - это массив памяти для хранения переменных вашего фреймворка в виде пар ключ⇒значение. Сохранение значения в hive обеспечивает его глобальную доступность для всех классов и методов вашего приложения.

set

Привязать значение к ключу Hive

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, начиная с F3 v3.4.0

$f3->LANGUAGE = 'en';
$f3->foo = 1234;
$f3['bar'] = 'buzzword';

Кэширование свойств

Если параметр $ttl > 0 и механизм кэширования F3 включен, указанная переменная будет кэшироваться в течение $ttl секунд. Уже кэшированные переменные будут обновлены путем повторного использования старого срока действия.

Если вам нужно кэшировать переменные на бесконечное время, проверьте метод 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 с помощью системных переменных F3 COOKIE, GET, POST, REQUEST, SESSION, FILES, SERVER, ENV. Эти 8 переменных автоматически синхронизируются с базовыми глобальными переменными PHP.

Примечание. Если вы установите или получите доступ к ключу SESSION, сеанс начнется автоматически. Вам не нужно делать это самому.

Помните : ключи Hive чувствительны к регистру.

Кроме того, ключи HIVE проверяются на соответствие этим разрешенным символам: [a_zA_Z0-9]

get

Получить содержимое ключа hive

mixed get ( string $key [, string|array $args = NULL ] )

Чтобы получить значение ранее сохраненной переменной, используйте:

$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);

Примечание: когда кэширование включено и переменная не была определена во время выполнения раньше, F3 пытается загрузить переменную из кэша при использовании 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'];

sync

Синхронизация глобальной переменной PHP с соответствующим ключом hive

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.

ref

Получение ссылки на ключ hive и его содержимое

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

Вы также можете добавить несуществующие ключи hive, элементы массива и свойства объекта, если по умолчанию второй аргумент имеет значение 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'

Если второй аргумент $add равен false, он просто возвращает содержимое ключа hive только для чтения. Это поведение используется в get (). Если ключ hive не существует, он возвращает NULL.

Используйте третий аргумент, если вы хотите найти ссылку в своем собственном массиве / объекте, а не в hive.

$fruitQty = ["Bananas"=>5, "Oranges"=>2, "Apples"=>42, "Mangos"=>1];
$apples = &$f3->ref("Apples", true, $fruitQty); // References $fruitQty["Apples"]
$apples = 10;
 
echo $fruitQty["Apples"]; // 10

exists

Возвращает true, если ключ hive установлен (или возвращает метку времени и TTL, если кэшировано)

bool exists ( string $key [, mixed &$val=NULL] )

Функция exists также проверяет кэш хранилища, когда ключ не найден в hive. Если ключ найден в кэше, метод возвращает array ( $timestamp, $ttl ).

Применение:

$f3->set('foo','value');
 
$f3->exists('foo'); // true
$f3->exists('bar'); // false, was not set above

Применение exists особенно полезно, когда глобальные переменные PHP автоматически синхронизируются с помощью F3 :

// Synched hive keys with PHP global variables
$f3->exists('COOKIE.userid');
$f3->exists('SESSION.login');
$f3->exists('POST.submit');

Примечание. Если вы проверите наличие ключа SESSION, сессия запустится автоматически.

Вы также можете использовать аргумент $val для получения ключа переменной в hive. Это может сэкономить дополнительный вызов get.

if ($f3->exists('foo',$value)) {
    echo $value; // bar
}

devoid

Возвращает TRUE, если ключ hive пуст и не кэширован.

bool devoid ( string $key )

Функция devoid проверяет, установлен-ли ключ в кэше, если ключ не был найден в 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

clear

Очистка ключа в hive

void clear ( string $key )

Чтобы полностью удалить ключ hive и его значение из памяти:

$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

Вы можете добавить все имена ключей, используя второй аргумент $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 в секундах.

hive

Вернуть все содержимое улья (hive) в виде массива

array hive ()

Применение:

printf ("A Busy Hive: <pre>%s</pre>", var_export( $f3->hive(), true ) );

copy

Копирование содержимого одной переменной hive в другую

mixed copy ( string $src, string $dst )

Если $dst уже существует в hive, он просто перезаписывается.

Применение:

$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'

concat

Объединить строку со строковой переменной в hive

string concat ( string $key, string $val )

Метод вернёт результат конкатенации.

Примечание. Если $key нет в hive, он автоматически создается.

Применение:

$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

flip

Поменять местами ключи и значения переменной массива в hive

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
)
*/

push

Добавить элемент в конец переменной-массива в hive

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
)
*/

pop

Удалить последний элемент переменной-массива в hive

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
)
*/

shift

Удалить первый элемент переменной-массива в hive

array|NULL shift ( string $key )

Возвращает сдвинутую влево переменную-массив из hive, или NULL, если переменная массива hive пуста или не является массивом.

Примечание : Все числовые ключи массива переменной массива hive будут изменены, чтобы начать отсчет с нуля, в то время как буквенные (текстовые) ключи не будут затронуты.

Пример:

$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
)
*/

merge

Объединить массив с переменной массива в hive

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 так же обновляется.

extend

Расширяет переменную массива 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
)
*/

Кодирование и преобразование

fixslashes

Преобразование обратного слеша в обычный слеш

string fixslashes ( string $str )

Применение:

$filepath = __FILE__; // \www\mysite\myfile.txt
$filepath = $f3->fixslashes($filepath); // /www/mysite/myfile.txt

split

Разбор строки через запятую, точку с запятой или вертикальную черту в массив

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
)
*/

Примечание: по умолчанию отфильтровываются пустые значения. Установите $noempty в FALSE, чтобы предотвратить такое поведение.

stringify

Преобразование выражения / значения PHP в сжатую экспортируемую строку

string stringify ( mixed $arg [, array $stack = NULL ] )

Эта функция позволяет преобразовать любое выражение PHP, значение, массив или любой объект в сжатую и экспортируемую строку. Урощённый вариант сериализации.

Пример с простым 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

camelcase

Преобразование строки snake_case в camelCase

string camelcase ( string $str )

Применение:

$str_s_c = 'user_name';
$f3->camelcase($str_s_c); // returns 'userName'

snakecase

Преобразование строки camelCase в snake_case

string snakecase ( string $str )

Применение:

$str_CC = 'userName';
$f3->snakecase($str_CC); // returns 'user_name'

sign

Возвращает -1, если указанное число отрицательное, 0, если ноль, или 1, если число положительное.

int sign ( mixed $num )

hash

Сгенерировать хеш 64-бит / base36

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+

encode

Преобразование специальных символов в объекты HTML

string encode ( string $str )

Кодирует такие символы, как & < > и другие символы, в зависимости от настройки ENCODING вашего приложения. (по умолчанию: UTF-8)

Пример:

echo $f3->encode("we <b>want</b> 'sugar & candy'");
// we &lt;b&gt;want&lt;/b&gt; 'sugar &amp; candy'

decode

Преобразование специальных 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'

clean

Удаляет HTML-теги (кроме перечисленных в аргументе) и непечатаемые символы для предотвращения атак XSS / внедрения кода.

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>

scrub

Аналог 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!')

serialize

Вернуть строковое представление любого значения PHP

string serialize ( mixed $arg )

В зависимости от системной переменной SERIALIZER этот метод преобразует что угодно в строковое выражение. Возможные значения: igbinary и php. F3 проверяет при запуске, доступен ли igbinary, и устанавливает его приоритет, поскольку расширение igbinary работает намного быстрее и использует меньше дискового пространства для сериализации.

unserialize

Возвращает значение PHP, полученное из сериализованной строки

string unserialize ( mixed $arg )

Локализация

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

format

Возврат форматированной строки с учетом локали

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}
  • число, целое число
  • число, валюта
  • число, валюта, целое
  • число, валюта, {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.'

Каждое ключевое слово во множественном числе является необязательным, и вы можете, например, опустить ключевое слово во множественном числе «два», если ключевое слово «другой» подходит для этого случая. Конечно, если вы опустите их все, будут отображаться только цифры.

Автоматическое форматирование переменных hive

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

Пример:

$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.'

language

Назначить либо автоматически определить язык

string language ( string $code )

Эта функция используется при загрузке F3 для автоматического определения языка пользователя, просматривая заголовки HTTP-запроса, в частности заголовок Accept-Language, отправленный браузером.

Используйте системную переменную LANGUAGE для получения и установки языков, поскольку она также обрабатывает зависимости, такие как установка локалей с помощью php setlocale (LC_ALL, …) и изменение файлов словарей. Переменная FALLBACK определяет язык по умолчанию, который будет использоваться, если ни один из обнаруженных языков не доступен в качестве файла словаря.

Пример:

$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

Переменная LANGUAGE принимает тот же тип строки, что и заголовок HTTP Accept-Language, который представляет собой список разделенных запятыми двухбуквенных языковых кодов, за которыми, возможно, следуют символ и двухбуквенный код страны.

Примечание. Даже если в локали POSIX в качестве разделителя используется символ подчеркивания (es_BR.UTF-8), вы должны определить переменную LANGUAGE с дефисом (es-BR). Файлы словарей подчиняются тому же правилу (es-BR.php / es-BR.ini).

Системные локали

Чтобы гарантировать, что метод форматирования и другие функции 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

На заметку: загружается первая локаль, найденная на сервере. Убедитесь, что на вашем сервере установлены все языковые стандарты, которые вы хотите поддерживать в своем приложении. На большинстве компьютеров с Linux вы можете проверить это с помощью locale,и установить новые языковые стандарты с помощью dpkg-reconfigure locales. Некоторым конфигурациям веб-сервера apache может потребоваться перезагрузка впоследствии для работы с новыми языковыми стандартами.

lexicon

Перенести словарные записи в hive

array lexicon ( string $path )

Эта функция используется при загрузке фреймворка для автоматической загрузки файлов словарей, расположенных по пути, заданному в LOCALES.

$f3->set('LOCALES','dict/');

Файл словаря может быть файлом php, возвращающим парный ассоциативный массив «ключ-значение», или файлом конфигурации в формате .ini.

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

alias

Сборка 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'

build

Заменяет токенизированный 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

mock

Имитация 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 переменная в HIVE для методов, не равных GET или HEAD. Если $body не определено, $args кодируется и экспортируется как BODY
  • Добавление [ajax]к $pattern фиктивным вызовам AJAX
  • Добавление [sync]к $pattern обычных (синхронных) вызовов
  • Добавление [cli] к $pattern имитирующим вызовам командной строки (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'
);

parse

Парсит строку, содержащую пары ключ-значение, и использует их в качестве токенов маршрутизации.

NULL parse ( string $str )

Пример:

$f3->parse('framework=f3 , speed=fast , features=full');
echo $f3->get('PARAMS.framework');  // 'f3'
echo $f3->get('PARAMS.speed');      // 'fast'

route

Привязать шаблон маршрута к данному обработчику

null route ( string|array $pattern, callback $handler [, int $ttl = 0 [, int $kbps = 0 ]] )

Базовый пример использования:

$f3->route('POST /login','AuthController->login');

Схема маршрута

Переменная $pattern описывает образец маршрута, который состоит из типа запроса(ов) и запрос URI, оба разделенных пробелом символ.

Verbs

Возможные определения типа запроса (Verb), которые будет обрабатывать 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/@width-@height/@file','ImageCompressor->render'); // /image/300-200/mario.jpg
$f3->route('GET /image/{@width}x{@height}/@file','ImageCompressor->render'); // /image/300x200/mario.jpg

После обработки URI входящего запроса (инициированного запросом) вы найдете значение каждого из этих токенов в системной переменной PARAMS как именованный ключ, например $f3→get('PARAMS.file'). / / 'mario.jpg'

Примечание. Маршруты и соответствующие им типы запросов сгруппированы по шаблону URL. Статические маршруты предшествуют маршрутам с динамическими токенами или подстановочными знаками.

Wildcards

Вы также можете определить подстановочные знаки (wildcards) ( /*) в своем 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"
});

Примечание: переменная `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->route('GET @beer_list: /beer', 'Beer->list');

Имена вставляются после типа маршрута (GET) и им предшествует символ @. Ко всем именованным маршрутам можно получить доступ с помощью системной переменной ALIASES для дальнейшей обработки в шаблонах или для перенаправления.

Кроме того, вы можете использовать существующее имя маршрута, чтобы сократить дополнительные определения маршрута:

$f3->route('GET @beer_details: /beer/@id', 'Beer->get');
$f3->route('POST @beer_details', 'Beer->saveComment');
$f3->route('PUT @beer_details', 'Beer->savePhoto');

Route Handler

Может быть вызываемым метод класса, например Foo→bar или Foo::bar, именем функции или анонимной функцией.

F3 автоматически передает экземпляр 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'];
    }
}

Кэширование

Третий аргумент $ttl определяет время кэширования в секундах. Установка для этого аргумента положительного значения вызовет функцию истечения срока действия для установки метаданных кэша в заголовке ответа HTTP. Он также кэширует ответ маршрута, но кэшируются только запросы GET и HEAD.

Если CACHE отключен, $ttl будет управлять кэшем браузера только с использованием метаданных заголовка с истекшим сроком действия. Если CACHE включен и $ttl для текущего обработчика URI запроса установлено в положительное значение, F3 дополнительно кэширует вывод для этой страницы и обновляет его $ttl по истечении срока действия.

Регулирование полосы пропускания

Установите 4-й аргумент $kbps на желаемое ограничение скорости, чтобы включить регулирование полосы пропускания.

reroute

Перенаправление на указанный 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 может быть использован для отключения немедленного перенаправления, а сценарий продолжается после установки соответсвующих заголовков. Это может быть полезно для тестирования.

redirect

Перенаправить маршрут на другой URL

null redirect ( string|array $pattern, string $url [, bool $permanent = TRUE ] )

Это небольшой метод предназначен только для перенаправления клиента. Аргумент $pattern принимает то же значение, как метод route().

Пример использования:

// 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] сегменте.

map

Предоставить интерфейс ReST путем сопоставления HTTP-метода с методом класса

null map ( string $url, string $class [, int $ttl = 0 [, int $kbps = 0 ]] )

Его синтаксис немного похож на функцию маршрута, но вам не нужно определять метод HTTP-запроса в первом аргументе, потому что они отображаются как функции в классе, который вы указываете в аргументе $class.

Пример использования:

$f3->map('/news/@item','News');
 
class News {
    function get() {}
    function post() {}
    function put() {}
    function delete() {}
}

run

Сопоставление маршрутов с входящим URI и вызов их обработчиков маршрута

null run ()

Пример использования:

$f3 = require __DIR__.'/lib/base.php';
$f3->route('GET /',function(){
    echo "Hello World";
});
$f3->run();

После обработки URI входящего запроса шаблон маршрутизации, который соответствует этому URI, сохраняется в переменной PATTERN, текущий URI HTTP-запроса в URI и метод запроса в VERB. В PARAMS будут содержаться все токены как именованные ключи, а также все токены и подстановочные знаки как числовые ключи, в зависимости от их порядка появления.

Генерируется ошибка 404, если токенизированный класс не существует.

Примечание. Если шаблон статического и динамического маршрута соответствует текущему URI, то шаблон статического маршрута имеет приоритет.

call

Выполнить callback / хук (поддерживает формат 'класс→ метод')

mixed|false call ( callback $func [, mixed $args = NULL [, string $hooks = '' ]] )

Этот метод предоставляет возможность вызывать коллбеки и их аргументы. F3 распознает их как действительные обратные вызовы:

  • Анонимные / лямбда-функции (также известные как замыкания)
  • array('class','method')
  • class::method статический метод
  • class→method эквивалентно array(new class,method)

$args если указано, предоставляет средства для выполнения обратного вызова с параметрами.

$hooks используется в route() для указания функций до и после выполнения, т.е. beforeroute() и afterroute().

chain

Последовательно выполнять указанные обратные вызовы; Применяйте одинаковые аргументы ко всем обратным вызовам

array chain ( array|string $funcs [, mixed $args = NULL ] )

Этот метод последовательно вызывает несколько обратных вызовов:

echo $f3->chain('a; b; c', 0);
 
function a($n) {
	return 'a: '.($n+1); // a: 1
}
 
function b($n) {
	return 'b: '.($n+1); // b: 1
}
 
function c($n) {
	return 'c: '.($n+1); // c: 1
}

relay

Последовательно выполнять указанные коллбеки; Ретранслировать результат предыдущего коллбека в качестве аргумента для следующего

array relay ( array|string $funcs [, mixed $args = NULL ] )

Этот метод вызывает коллбек последовательно, как цепочку, но применяет результат первой функции в качестве аргумента последующей функции, то есть:

echo $f3->relay('a; b; c', 0);
 
function a($n) {
	return 'a: '.($n+1); // a: 1
}
 
function b($n) {
	return 'b: '.($n+1); // b: 2
}
 
function c($n) {
	return 'c: '.($n+1); // c: 3
}

Файловая система

copy

Собственная функция PHP

bool copy ( string $source , string $dest [, resource $context ] )

Чтобы скопировать файл, используйте встроенную функцию PHP copy(). Приведено в данном руководстве для удобства.

Собственная функция PHP

bool unlink ( string $filename [, resource $context ] )
 

Чтобы удалить файл, используйте встроенную функцию PHP unlink(). Приведено в данном руководстве для удобства.

rename

Собственная функция PHP

bool rename ( string $oldname , string $newname [, resource $context ] )
 

Чтобы переместить файл, используйте встроенную функцию PHP rename(), изменив путь во втором аргументе. Приведено в данном руководстве для удобства.

mutex

Создать мьютекс, вызвать коллбек и освободить ресурс по его завершению

mixed mutex ( string $id, callback $func [, mixed $args = NULL ] )

Взаимное исключение (мьютекс) представляет собой механизм кросс-платформенного доступа к ресурсам для синхронизации. Таким образом, процесс, который получил мьютекс, имеет эксклюзивный доступ к ресурсу. Другие процессы, пытающиеся получить тот же мьютекс, будут находиться в приостановленном состоянии до тех пор, пока мьютекс не будет освобожден.

$f3->mutex('test',function() {
	// Critical section
	session_start();
	$contents=file_get_contents('mutex');
	sleep(5);
	file_put_contents('mutex',$contents.date('r').' '.session_id()."\n");
});

В коллбек можно передать аргументы:

$f3->mutex('my-mutex-id',function($path,$str) {
	@file_put_contents($path,$str);
},array('/foo/bar/facts.txt','F3 is cool'));

read

Прочитать файл (с возможностью применения Unix LF в качестве символа окончания строки)

string|FALSE read ( string $file [, bool $lf = FALSE ] )

Использует функцию PHP file_get_contents() для чтения всего файла и возврата в виде строки. Возвращает true/false в зависимости от результата попытки чтения файла. Преобразует любые символы окончания строки в LF.

rel

Возвращает путь относительно базового каталога

string rel ( string $url )

Пример:

$f3->set('BASE','http://fatfreeframework.com/');
echo $f3->rel( 'http://fatfreeframework.com/gui/img/supported_dbs.jpg' ); // 'gui/img/supported_dbs.jpg'

write

Эксклюзивная запись в файл

int|FALSE write ( string $file, mixed $data [, bool $append = FALSE ] )

Использует функцию PHP file_put_contents() с флагом LOCK_EX для блокировки файла во время записи.

Если $append установить в TRUE и $file уже существовал на момент вызова метода, то $data добавляется к содержимому файла вместо того чтобы перезаписать содержимое файла.

Разное

instance

Вернуть экземпляр класса

Base $f3 = \Base::instance();

Метод используется для получения экземпляра F3 в любой точке вашего кода.

abort

Отключить HTTP-клиент

void abort ( )

Этот метод может быть удобен для прерывания соединения с клиентом и отправки ему текущего ответа, но на самом деле скрипт пордолжит выполнение. Подобный метод может быть полезен для таких как отправка сообщений SMTP или создание больших файлов PDF без каких-либо задержек для клиента.

blacklisted

Поиск IP посетителя в черных списках DNS

bool blacklisted ( string $ip )

Эта функция вызывается во время начальной загрузки приложения и будет искать IP-адреса посетителей в черных списках DNS, определенных системной переменной DNSBL. Это очень полезно для защиты вашего приложения от спам-ботов или DDOS-атак.

Вернёт TRUE если IPv4 $ip адрес присутствует в DNSBL

compile

Преобразование токена в стиле JS в представление PHP

string compile ( string $str )

Этот метод в основном используется классом Preview, облегченным механизмом шаблонов, для преобразования токенов в переменные.

Пример:

$f3->compile('@RAINBOW.cyan'); // returns: $RAINBOW['cyan']

config

Загрузка настроек фреймворка из файла в формате .ini

null config ( string $file [, bool $allow = FALSE ])

Метод проанализирует файл конфигурации, указанный в $file, и настроит фрейморк в соответсвии с ним. Если указан 2-й аргумент $allow, строки шаблона интерпретируются, что делает возможными динамические конфигурации:

[globals]
foo = bar
baz = {{@foo}}

constants

Преобразование констант класса в массив

array constants ( object | string $class [, string $prefix = '' ] )

Пример, при условии, что у нас есть Foo\Bar класс, определенный ниже:

namespace Foo;
class Bar {
  const STATUS_Inactive=0;
  const STATUS_Active=1;
  const E_NotFound='Not found';
}

вы можете получить доступ ко всем константам с префиксом STATUS_:

$constants=$f3->constants('Foo\Bar','STATUS_');
var_dump($constants);
// outputs:
array(2) {
  ["Inactive"]=>int(0)
  ["Active"]=>int(1)
}

Передача объекта также работает: $f3→constants($bar,'STATUS_').

dump

Отображение дампа (_echo_) с подсветкой синтаксиса

null dump ( mixed $expr )

ВНИМАНИЕ. Подсветка синтаксиса зависит от уровня DEBUG.

error

Выполнить обработчик ошибок

null error ( int $code [, string $text = '' [, array $trace = NULL [, int $level = 0 ]]] )

Вызов этой функции регистрирует ошибку и выполняет обработчик ONERROR, если он определен. В противном случае он отобразит страницу ошибки по умолчанию в HTML для синхронных запросов или предоставит строку JSON для запросов AJAX.

expire

Отправить метаданные кэша HTTP-клиенту

void expire ( [ int $secs = 0 ] )

Нет необходимости вызывать этот метод напрямую, потому что он автоматически вызывается во время выполнения действий фреймворком, в зависимости от того, должна ли страница кэшироваться или нет. F3 отправляет в браузер необходимые заголовки элементов управления кэшем HTTP, поэтому вам не нужно отправлять их самостоятельно.

$f3->expire(0); // sends 'Cache-Control: no-cache, no-store, must-revalidate'

highlight

Применить подсветку синтаксиса

string highlight ( string $text )

Применяет подсвтеку синтаксиса к заданной строке и возвращает выделенную строку.

Пример:

$highlighted_code = $f3->highlight( '$fatfree->rocks(\'FAST\' AND $light)' );

Результат:

<code><span class="variable">$fatfree</span><span class="object_operator">-&gt;</span><span class="string">rocks</span><span>(</span><span class="constant_encapsed_string">'FAST'</span><span class="whitespace"> </span><span class="logical_and">AND</span><span class="whitespace"> </span><span class="variable">$light</span><span>)</span></code.>

Имейте в виду, что вам нужна таблица стилей `code.css`, чтобы получить правильную подсветку синтаксиса на страницах вашего браузера. Вы можете включить его на свои страницы с помощью <link href = «code.css» rel = «stylesheet» /> (code.css имеется в папке lib/ фреймворка)

status

Отправить заголовок статуса HTTP / 1.1; Возврат текстового эквивалента кода состояния

string status ( int $code )

Используйте этот метод для отправки клиенту различных сообщений о состоянии HTTP соединения, например

$f3->status(404); // Sends a '404 Not Found' client error
$f3->status(407); // Sends a '407 Proxy Authentication Required' client error
$f3->status(503); // Sends a '503 Service Unavailable' server error

unload

Выполнить последовательность завершения работы фреймворка / приложения

null unload ( string $cwd )

Сначала меняет текущий каталог PHP на каталог $cwd, записывает данные сеанса и завершает сеанс, вызывая session_commit().

Затем он завершает работу приложения и вызывает обработчик завершения работы, определенный в UNLOAD.

В качестве последнего коллбека возникает ошибка HTTP 500 если одно из событий E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR обнаруживается и не обрабатывается обработчиком завершения работы.

recursive

Рекурсивно вызывать коллбек для всех типов данных

mixed recursive( mixed $arg , callable $func [, array $stack = NULL ] )

Рекурсивный метод берет ваш $arg и применяет $func коллбек к любому значению глубоко вложенного массива или свойству объекта, которое может быть найдено, и возвращает копию $arg. Вот небольшой пример:

// ensure proper UTF-8 sequences before encoding
echo json_encode($f3->recursive($out,function($val){
	return mb_convert_encoding($val,'UTF-8','UTF-8');
}));

Примечание: для вызова коллбека `$func` для объектов требуется` PHP> = 5.4`. В противном случае объекты возвращаются без дальнейшей обработки. Помните, что возвращаемые объекты являются клонами, а обратный вызов применяется только к доступным нестатическим свойствам.

until

Цикл, который выполняется, пока коллбек не вернет true

mixed until ( callable $func [, array $args = null [, int $timeout = 60 ] ] )

Коллбек $func вызывается один раз в секунду с аргументом $args пока одно из следующих условий завершает цикл:

  • HTTP-клиент отключается
  • Тайм-аут через $timeout секунд
  • Тайм-аут за одну секунду до достижения настроенного PHP max_execution_time
  • Сбой при повторном открытии сеанса
  • Коллбек $func возвращает булево значение, равное true

F3 закрывает сессию после и повторно открывает сессию перед вызовом коллбека $func чтобы предотвратить блокировку сессии, которая в противном случае заблокировала бы одновременные запросы с той же сессией.

Примечание: «$timeout» ограничено конфигурацией PHP «max_execution_time».

Печать/экспорт