Переменные

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

Переменные, определенные в Fat-Free, являются глобальными, то есть они могут быть доступны любому компоненту. Глобалы фреймворка не идентичны глобалам PHP. Переменная F3 с именем contentне идентична PHP $content. F3 сам по себе является доменным языком и поддерживает свою собственную отдельную таблицу символов для системных и прикладных переменных. Фреймворк, как и любая хорошо разработанная объектно-ориентированная программа, не загрязняет глобальное пространство имен PHP константами, переменными, функциями или классами, которые могут конфликтовать с любым приложением. В отличие от других фреймворков, F3 не использует PHP define() заявление. Все константы фреймворка ограничены классами.

Чтобы присвоить значение F3 переменной:

$f3->set('var',value)

Примечание: F3 переменные принимают все типы данных PHP, включая объекты и анонимные функции.

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

$f3->mset(
    array(
        'foo'=>'bar',
        'baz'=>123
    )
);

Чтобы получить значение переменной фреймворка с именемvar:

$f3->get('var')

Чтобы удалить F3 переменную из памяти, если она вам больше не нужна (отбросьте ее, чтобы она не мешала другим вашим функциям / методам), используйте этот метод:

$f3->clear('var')

Чтобы узнать, была ли переменная определена ранее:

$f3->exists('var')

Глобальные

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

$f3->set('a','fire');
$f3->concat('a','cracker');
echo $f3->get('a'); // возвращает строку 'firecracker'

$f3->copy('a','b');
echo $f3->get('b'); // возвращает ту же строку: 'firecracker'

F3 также предоставляет некоторые примитивные методы для работы с переменными массива:

$f3->set('colors',array('red','blue','yellow'));
$f3->push('colors','green'); // работает как PHP array_push()
echo $f3->pop('colors');     // возвращается 'green'

$f3->unshift('colors','purple'); // похоже на array_unshift()
echo $f3->shift('colors');       // возвращается 'purple'

$f3->set('grays',array('light','dark'));
$result=$f3->merge('colors','grays'); // объединяет два массива

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

В отличие от других фреймворков, которые имеют жесткую структуру папок, F3 дает вам большую гибкость. У вас может быть структура папок, которая выглядит следующим образом (заключенные в скобки слова во всех заглавных буквах представляют переменные фреймворка F3, которые нуждаются в настройке):

/ веб-корень, где находится index.php
    app/ файлы приложений
        dict/ ЛОКАЛИ, необязательно
        controllers/
        logs/ ЛОГИ, необязательно
        models/
        views/ UI
    css/
    js/
    lib/ вы можете хранить base.php здесь
    tmp/ 
        cache/ 

Не стесняйтесь организовывать свои файлы и каталоги так, как вы хотите. Просто установите соответствующие глобальные переменные F3. Если вы хотите действительно безопасный сайт, Fat-Free даже позволяет хранить все ваши файлы в недоступном для Интернета каталоге. Единственное требование состоит в том , чтобы вы оставили index.php, .htaccess и свои публичные файлы, такие как CSS, JavaScript, изображения и т. д. в пути, видимом вашему браузеру.

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

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

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

strpos () ожидает по крайней мере 2 параметра, 0 задано

• var/html/dev/main.php:96 strpos()
• var/html/dev/index.php:16 Base->run()

Если вы чувствуете, что это слишком просто или хотите сделать что-то другое, когда возникает ошибка, вы можете создать свой собственный обработчик ошибок:

$f3->set('ONERROR',
    function($f3) {
        // код пользовательского обработчика ошибок находится здесь
        // используйте это, если вы хотите отобразить ошибки в
        // формат соответствует теме вашего сайта
        echo $f3->get('ERROR.text');
    }
);

F3 поддерживает глобальную переменную, содержащую сведения о последней ошибке, возникшей в вашем приложении. ERRORПеременная представляет собой массив, структурированный следующим образом:

`ERROR.code` - код ошибки состояния HTTP (`404`, `500`, etc.)
`ERROR.status` - краткое описание кода состояния HTTP. например, `Не найдено"
`ERROR.text` - контекст ошибки
`ERROR.trace` - трассировка стека, хранящаяся в `array()`
`ERROR.level` - уровень отчетности об ошибках (`E_WARNING`, `E_STRICT`, etc.)

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

$f3->set('ONERROR',
    function($f3) {
	// рекурсивно очистите существующие выходные буферы:
        while (ob_get_level())
            ob_end_clean();
        // ваша свежая страница здесь:
        echo $f3->get('ERROR.text');
    }
);

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

$f3->set('DEBUG',3);

Просто вставьте команду в последовательность начальной загрузки вашего приложения.

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

$f3->set('DEBUG',0);

Это приведет к подавлению вывода трассировки стека на любой сгенерированной системой HTML-странице ошибок (потому что она не предназначена для просмотра посетителями вашего сайта).

DEBUG может иметь значения в диапазоне от 0(stack trace suppressed) до 3(most verbose with class and function call logs).

Не забывай! Трассировки стека могут содержать пути, имена файлов, команды базы данных, имена пользователей и пароли. Вы можете подвергнуть свой веб-сайт ненужным рискам безопасности, если не установите DEBUGглобальную переменную 0в рабочей среде.

Можно настроить описание ошибки в момент запуска ошибки, передав новое описание в качестве второго аргумента, например :

$f3->error(401, "В запросе отсутствует информация, необходимая для предоставления доступа.");

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

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

Существует 4 предопределенных названия разделов:

  • [globals] для определения глобальных переменных

  • [routes] для определения маршрутов

  • [maps] для определения карт маршрутов

  • [redirects] для перенаправления маршрутов

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

Вот как использовать различные разделы:.

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

Вместо того чтобы создавать PHP скрипт содержащий следующий пример кода:

$f3->set('num',123);
$f3->set('str','abc');
$f3->set('hash',array('x'=>1,'y'=>2,'z'=>3));
$f3->set('items',array(7,8,9));
$f3->set('mix',array('this',123.45,FALSE));

Вы можете создать конфигурационный файл, который делает то же самое:

[globals]
num=123
; это обычная строка
str=abc
; другой способ присвоения строк
str="abc"
; это массив
hash[x]=1
hash[y]=2
hash[z]=3
; также распознается точечная нотация
hash.x=1
hash.y=2
hash.z=3
; это также массив
items=7,8,9
; массив со смешанными элементами
mix="this",123.45,FALSE

Вместо длинных $f3->set()инструкций в коде вы можете поручить фреймворку загрузить конфигурационный файл в качестве замены кода. Давайте сохраним приведенный выше текст в качестве настройки setup.cfg. Тогда мы можем назвать его простым:

$f3->config('setup.cfg');

Строковые значения не должны заключаться в кавычки, если только вы не хотите включить начальные или конечные пробелы. Если запятая должна рассматриваться как часть строки, заключите ее в двойные кавычки - в противном случае значение будет рассматриваться как массив (запятая используется в качестве разделителя элементов массива). Строки могут охватывать несколько строк:

[globals]
str="это \
очень длинная \
строка"

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

F3 также дает вам возможность определять маршруты HTTP в конфигурационных файлах:

[routes]
GET /=home
GET /404=App->page404
GET /page/@num=Page->controller
; Кэшируйте маршрут в течение 10 минут
GET /contact=App->contact, 600
; названный маршрут
GET @about: /about=Page->about

[карты]

Карты маршрутов также можно определить в конфигурационных файлах:

[maps]
/blog=Blog\Login
/blog/@controller=Blog\@controller

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

Вы также можете перенаправлять устаревшие маршруты на новые страницы в конфигурационных файлах:

[redirects]
GET|HEAD /obsoletepage = /newpage
GET|HEAD /dash = @dashboard
GET|HEAD /search = https://www.google.com

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

Вы также можете включить другие конфигурационные файлы.

[configs]
app/routes.ini = true
app/app_ext.ini = false

Не позволяйте правильному значению сбить вас с толку, оба файла выше включены. Параметр true/false boolean запускает $allowаргумент метода config, который позволяет разрешить динамический токен в ваших конфигурационных файлах.

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

Любое другое название раздела, кроме 3 выше, интерпретируется как [globals]раздел с префиксом имени раздела.

Итак следующее:

[foo]
a = 1
b = 2

[foo.hash]
x = 1
y = 2
z = 3

эквивалентно:

$f3->set('foo',array(
  'a' => 1,
  'b' => 2,
  'hash' => array(
    'x' => 1,
    'y' => 2,
    'z' => 3
  )
));

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

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

[foo.bar:strtoupper]
x = hello
y = world

Last updated