Переменные

Основное использование

Переменные, определенные в Fat-Free, являются глобальными, то есть они могут быть доступны любому компоненту. Глобалы фреймворка не идентичны глобалам PHP. Переменная F3 с именем contentне идентична PHP $content. F3 сам по себе является доменным языком и поддерживает свою собственную отдельную таблицу символов для системных и прикладных переменных. Фреймворк, как и любая хорошо разработанная объектно-ориентированная программа, не загрязняет глобальное пространство имен PHP константами, переменными, функциями или классами, которые могут конфликтовать с любым приложением. В отличие от других фреймворков, F3 не использует PHP define() заявление. Все константы фреймворка ограничены классами.
Чтобы присвоить значение F3 переменной:
1
$f3->set('var',value)
Copied!
Примечание: F3 переменные принимают все типы данных PHP, включая объекты и анонимные функции.
Чтобы задать сразу несколько переменных:
1
$f3->mset(
2
array(
3
'foo'=>'bar',
4
'baz'=>123
5
)
6
);
Copied!
Чтобы получить значение переменной фреймворка с именемvar:
1
$f3->get('var')
Copied!
Чтобы удалить F3 переменную из памяти, если она вам больше не нужна (отбросьте ее, чтобы она не мешала другим вашим функциям / методам), используйте этот метод:
1
$f3->clear('var')
Copied!
Чтобы узнать, была ли переменная определена ранее:
1
$f3->exists('var')
Copied!

Глобальные

F3 поддерживает свою собственную таблицу символов для переменных фреймворка и приложения, которые не зависят от PHP. некоторые переменные сопоставляются с глобалами PHP. В F3 SESSION- это эквивалент$_SESSION, а REQUESTкарты$_REQUEST-нет . Рекомендуется использовать переменные фреймворка, а не PHP, чтобы помочь вам с передачей данных между различными функциями, классами и методами. У них есть и другие преимущества:
  • Переменные фреймворка можно использовать непосредственно в шаблонах.
  • Вам не нужно указывать PHP ссылаться на переменную вне текущей области видимости, используя глобальное ключевое слово внутри каждой функции или метода. Все переменные F3 являются глобальными для вашего приложения.
  • Установка F3 эквивалента PHP SESSIONтакже изменяет базовую версию PHP $_SESSION. Изменение последнего также изменяет аналог фреймворка.
Fat-Free не поддерживает просто тупое хранилище переменных и их значений. Он также может автоматизировать управление сеансами и другие вещи. Назначение или извлечение значения через SESSIONпеременную F3 автоматически запускает сеанс. Если вы используете $_SESSION(или связанные с сеансом функции) непосредственно, а не переменную фреймворкаSESSION, ваше приложение становится ответственным за управление сеансами.
As a rule, framework variables do not persist between HTTP requests. Only SESSION and COOKIE (и их элементы), которые сопоставлены с PHP $_SESSION и $_COOKIE глобальные переменные не зависят от состояния HTTP.
Существует несколько предопределенных глобальных переменных, используемых внутри Fat-Free, и вы, безусловно, можете использовать их в своем приложении. Будьте уверены, что вы знаете, что делаете. Изменение некоторых глобальных переменных без жира может привести к неожиданному поведению фреймворка.
Платформа содержит несколько переменных, которые помогут вам упорядочить структуру файлов и каталогов. Мы видели, как мы можем автоматизировать загрузку классов с помощью автоматической AUTOLOAD. Существует глобальная переменная UI пользовательского интерфейса, которая содержит путь, указывающий на расположение ваших HTML-представлений/шаблонов. DEBUG- это еще одна переменная, которую вы будете довольно часто использовать во время разработки приложений, и она используется для настройки детализации следов ошибок.
Полный список встроенных переменных фреймворка приведен в Кратком справочнике.

Правила Именования

Переменная фреймворка может содержать любое количество букв, цифр и символов подчеркивания. Он должен начинаться с Альфа-символа и не должен содержать пробелов. Имена переменных чувствительны к регистру.
F3 использует все заглавные буквы для внутренних предопределенных глобальных переменных. Ничто не мешает вам использовать имена переменных, состоящие из всех заглавных букв в вашей собственной программе, но, как правило, придерживайтесь нижнего регистра (или camelCase) при настройке собственных переменных, чтобы избежать любого возможного конфликта с текущими и будущими выпусками фреймворка.
Вы не должны использовать зарезервированные PHP слова, такие какif, for, class, и т.д.default как имена переменных фреймворка. Это может привести к непредсказуемым результатам.

Работа со строковыми и массивными переменными

F3 также предоставляет ряд инструментов, которые помогут вам работать с переменными фреймворка.
1
$f3->set('a','fire');
2
$f3->concat('a','cracker');
3
echo $f3->get('a'); // возвращает строку 'firecracker'
4
5
$f3->copy('a','b');
6
echo $f3->get('b'); // возвращает ту же строку: 'firecracker'
Copied!
F3 также предоставляет некоторые примитивные методы для работы с переменными массива:
1
$f3->set('colors',array('red','blue','yellow'));
2
$f3->push('colors','green'); // работает как PHP array_push()
3
echo $f3->pop('colors'); // возвращается 'green'
4
5
$f3->unshift('colors','purple'); // похоже на array_unshift()
6
echo $f3->shift('colors'); // возвращается 'purple'
7
8
$f3->set('grays',array('light','dark'));
9
$result=$f3->merge('colors','grays'); // объединяет два массива
Copied!

Структуры Каталогов - Сделай сам!

В отличие от других фреймворков, которые имеют жесткую структуру папок, F3 дает вам большую гибкость. У вас может быть структура папок, которая выглядит следующим образом (заключенные в скобки слова во всех заглавных буквах представляют переменные фреймворка F3, которые нуждаются в настройке):
1
/ веб-корень, где находится index.php
2
app/ файлы приложений
3
dict/ ЛОКАЛИ, необязательно
4
controllers/
5
logs/ ЛОГИ, необязательно
6
models/
7
views/ UI
8
css/
9
js/
10
lib/ вы можете хранить base.php здесь
11
tmp/
12
cache/
Copied!
Не стесняйтесь организовывать свои файлы и каталоги так, как вы хотите. Просто установите соответствующие глобальные переменные F3. Если вы хотите действительно безопасный сайт, Fat-Free даже позволяет хранить все ваши файлы в недоступном для Интернета каталоге. Единственное требование состоит в том , чтобы вы оставили index.php, .htaccess и свои публичные файлы, такие как CSS, JavaScript, изображения и т. д. в пути, видимом вашему браузеру.

Об обработчике ошибок F3

Fat-Free генерирует свои собственные HTML-страницы ошибок с трассировками стека, чтобы помочь вам в отладке. Вот вам пример:

внутренняя ошибка сервера

strpos () ожидает по крайней мере 2 параметра, 0 задано
1
• var/html/dev/main.php:96 strpos()
2
• var/html/dev/index.php:16 Base->run()
Copied!
Если вы чувствуете, что это слишком просто или хотите сделать что-то другое, когда возникает ошибка, вы можете создать свой собственный обработчик ошибок:
1
$f3->set('ONERROR',
2
function($f3) {
3
// код пользовательского обработчика ошибок находится здесь
4
// используйте это, если вы хотите отобразить ошибки в
5
// формат соответствует теме вашего сайта
6
echo $f3->get('ERROR.text');
7
}
8
);
Copied!
F3 поддерживает глобальную переменную, содержащую сведения о последней ошибке, возникшей в вашем приложении. ERRORПеременная представляет собой массив, структурированный следующим образом:
1
`ERROR.code` - код ошибки состояния HTTP (`404`, `500`, etc.)
2
`ERROR.status` - краткое описание кода состояния HTTP. например, `Не найдено"
3
`ERROR.text` - контекст ошибки
4
`ERROR.trace` - трассировка стека, хранящаяся в `array()`
5
`ERROR.level` - уровень отчетности об ошибках (`E_WARNING`, `E_STRICT`, etc.)
Copied!
Если ваш проект использует шаблоны, вы можете обработать потенциальные ошибки шаблонов, очистив любой существующий выходной буфер и отобразив вместо него новую страницу:
1
$f3->set('ONERROR',
2
function($f3) {
3
// рекурсивно очистите существующие выходные буферы:
4
while (ob_get_level())
5
ob_end_clean();
6
// ваша свежая страница здесь:
7
echo $f3->get('ERROR.text');
8
}
9
);
Copied!
При разработке приложения лучше всего установить максимальный уровень отладки, чтобы можно было проследить все ошибки до их первопричины:
1
$f3->set('DEBUG',3);
Copied!
Просто вставьте команду в последовательность начальной загрузки вашего приложения.
Как только ваше приложение будет готово к выпуску, просто удалите инструкцию из вашего приложения или замените ее на:
1
$f3->set('DEBUG',0);
Copied!
Это приведет к подавлению вывода трассировки стека на любой сгенерированной системой HTML-странице ошибок (потому что она не предназначена для просмотра посетителями вашего сайта).
DEBUG может иметь значения в диапазоне от 0(stack trace suppressed) до 3(most verbose with class and function call logs).
Не забывай! Трассировки стека могут содержать пути, имена файлов, команды базы данных, имена пользователей и пароли. Вы можете подвергнуть свой веб-сайт ненужным рискам безопасности, если не установите DEBUGглобальную переменную 0в рабочей среде.
Можно настроить описание ошибки в момент запуска ошибки, передав новое описание в качестве второго аргумента, например :
1
$f3->error(401, "В запросе отсутствует информация, необходимая для предоставления доступа.");
Copied!

конфигурационный файл

Если ваше приложение должно быть настроено пользователем, F3 предоставляет удобный метод чтения конфигурационных файлов для настройки вашего приложения. Таким образом, вы и ваши пользователи можете настроить приложение, не изменяя никакого PHP-кода.
Существует 4 предопределенных названия разделов:
  • [globals] для определения глобальных переменных
  • [routes] для определения маршрутов
  • [maps] для определения карт маршрутов
  • [redirects] для перенаправления маршрутов
NB: [globals]предполагается, если раздел не был предоставлен. Вы можете объединить все разделы в один конфигурационный файл-хотя наличие [routes], [maps], и [redirects]в отдельном файле рекомендуется. Таким образом, вы можете разрешить конечным пользователям изменять некоторые флаги конкретных приложений и в то же время запретить им вмешиваться в вашу логику маршрутизации.
Вот как использовать различные разделы:.

[глобальный]

Вместо того чтобы создавать PHP скрипт содержащий следующий пример кода:
1
$f3->set('num',123);
2
$f3->set('str','abc');
3
$f3->set('hash',array('x'=>1,'y'=>2,'z'=>3));
4
$f3->set('items',array(7,8,9));
5
$f3->set('mix',array('this',123.45,FALSE));
Copied!
Вы можете создать конфигурационный файл, который делает то же самое:
1
[globals]
2
num=123
3
; это обычная строка
4
str=abc
5
; другой способ присвоения строк
6
str="abc"
7
; это массив
8
hash[x]=1
9
hash[y]=2
10
hash[z]=3
11
; также распознается точечная нотация
12
hash.x=1
13
hash.y=2
14
hash.z=3
15
; это также массив
16
items=7,8,9
17
; массив со смешанными элементами
18
mix="this",123.45,FALSE
Copied!
Вместо длинных $f3->set()инструкций в коде вы можете поручить фреймворку загрузить конфигурационный файл в качестве замены кода. Давайте сохраним приведенный выше текст в качестве настройки setup.cfg. Тогда мы можем назвать его простым:
1
$f3->config('setup.cfg');
Copied!
Строковые значения не должны заключаться в кавычки, если только вы не хотите включить начальные или конечные пробелы. Если запятая должна рассматриваться как часть строки, заключите ее в двойные кавычки - в противном случае значение будет рассматриваться как массив (запятая используется в качестве разделителя элементов массива). Строки могут охватывать несколько строк:
1
[globals]
2
str="это \
3
очень длинная \
4
строка"
Copied!

[пути сообщения]

F3 также дает вам возможность определять маршруты HTTP в конфигурационных файлах:
1
[routes]
2
GET /=home
3
GET /404=App->page404
4
GET /page/@num=Page->controller
5
; Кэшируйте маршрут в течение 10 минут
6
GET /contact=App->contact, 600
7
; названный маршрут
8
GET @about: /about=Page->about
Copied!

[карты]

Карты маршрутов также можно определить в конфигурационных файлах:
1
[maps]
2
/blog=Blog\Login
3
/blog/@controller=Blog\@controller
Copied!

[перенаправляет]

Вы также можете перенаправлять устаревшие маршруты на новые страницы в конфигурационных файлах:
1
[redirects]
2
GET|HEAD /obsoletepage = /newpage
3
GET|HEAD /dash = @dashboard
4
GET|HEAD /search = https://www.google.com
Copied!

[конфигурации]

Вы также можете включить другие конфигурационные файлы.
1
[configs]
2
app/routes.ini = true
3
app/app_ext.ini = false
Copied!
Не позволяйте правильному значению сбить вас с толку, оба файла выше включены. Параметр true/false boolean запускает $allowаргумент метода config, который позволяет разрешить динамический токен в ваших конфигурационных файлах.

Пользовательский раздел

Любое другое название раздела, кроме 3 выше, интерпретируется как [globals]раздел с префиксом имени раздела.
Итак следующее:
1
[foo]
2
a = 1
3
b = 2
4
5
[foo.hash]
6
x = 1
7
y = 2
8
z = 3
Copied!
эквивалентно:
1
$f3->set('foo',array(
2
'a' => 1,
3
'b' => 2,
4
'hash' => array(
5
'x' => 1,
6
'y' => 2,
7
'z' => 3
8
)
9
));
Copied!

Секционные Крючки

Кроме того, можно определить пользовательский обратный вызов, который применяется к каждому значению:
1
[foo.bar:strtoupper]
2
x = hello
3
y = world
Copied!