База
Не стесняйтесь удалять все остальные файлы в
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
нескольких секунд. Уже кэшированные Вары будут обновлены путем повторного использования старого времени истечения срока действия.Вы можете кэшировать строки, массивы и все другие типы-даже полные объекты.
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
Многопеременное присвоение с использованием ассоциативного массива
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
)
*/
Добавить элемент в начало переменной массива 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
в улье также обновляется.Преобразование обратной косой черты в косую черту
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, чтобы предотвратить такое поведение.Преобразование 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
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
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 <b>want</b> 'sugar & candy'
Преобразование специальных HTML-сущностей обратно в символы
string decode ( string $str )
Пример:
echo $f3->decode("we <b>want</b> 'sugar & 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 )
Возвращаемая форматированная строка с учетом локали
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 )
Эта функция используется при загрузке фреймворка для автоматической загрузки файлов словаря, расположенных в пределах определенного пути в
LOCALES
var.$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
переменная улья для глаголов, не равныхGET
orHEAD
. 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');
Схема Маршрута
$pattern
Var описывает шаблон маршрута, состоящий из типа запроса и 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/@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 входящего запроса (инициированного 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');
обработчик маршрута
Это может быть в