Переменные
Переменные, определенные в 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, изображения и т. д. в пути, видимом вашему браузеру.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 modified 2yr ago