Плагины

Введение

Плагины - это не что иное, как автоматически загружаемые классы, которые использует фреймворк для расширения возможностей и функциональности. Если вы хотите внести свой вклад, оставьте сообщение в группах Google, на Github или расскажите нам об этом на канале FreeNode #fatfreeIRC. Сообщество F3 будет очень признательно, если мы объединим наши усилия для расширения функционала фреймворка.

Изображения

CAPTCHA

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

$img = new Image();
$img->captcha('fonts/CoolFont.ttf',16,5,'SESSION.captcha_code');
$img->render();

В этом примере создается случайное изображение на основе желаемого шрифта TrueType. Папка fonts/ является вложенной пути UI. Второй параметр указывает размер шрифта (выполняется процесс увеличения 2x, т.е. При размере 16 будет получено изображение высотой около 32 пикселей). Третий параметр определяет количество генерируемых шестнадцатеричных символов, допустимые значения от минимум 4 до максимум 13.

Последний параметр представляет собой имя переменной F3. Используйте его для хранения строкового эквивалента изображения CAPTCHA, чтобы сравнить его с вводом пользователя. Чтобы сделать строку безопасной для перезагрузки, мы указали переменную сеанса: SESSION.captcha_code которая соответствует $_SESSION['captcha_code'], которую вы можете использовать позже, чтобы проверить, соответствует ли элемент ввода в представленной форме этой строке.

Обработка изображений

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

Журнал (Лог)

Для того чтобы создать лог событий приложения, достаточно написать такой код.

$logger = new \Log('app-events.log');
$logger->write('User John logged in.');

При этом в логе будет содержаться время, дата события и IP адрес с которого поступил запрос.

Markdown

Преобразуйте свой любимый Markdown (Википедия или Github) в HTML.

$filePath = 'content/readme.md';
$fileContent = $f3->read($filePath); // read file contents
 
echo \Markdown::instance()->convert($fileContent);

Web

Получение данных с другого сайта

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

$web=new Web;
$request=$web->request('http://www.google.com/');
// another way to do it:
$request=Web::instance()->request('http://www.google.com/');

Этот простой пример отправляет HTTP-запрос на страницу, расположенную по адресу www.google.com, и сохраняет его в переменной $request. Метод request() возвращает массив , содержащий ответ HTTP таким образом, что $request['headers'] и $request['body'] содержат заголовки ответа и тело, соответственно. Мы могли сохранить содержимое с помощью команды F3 :: set или передать вывод прямо в браузер. Извлечение другой HTML-страницы из сети может не иметь какой-либо практической цели. Но это может быть особенно полезно в приложениях ReSTful, таких как запросы к серверу CouchDB.

$host='localhost:5984';
$web->request($host.'/_all_dbs'),
$web->request($host.'/testdb/',array('method'=>'PUT'));

Возможно, вы заметили, что в request()метод можно передать массив дополнительных параметров :

$web->request(
    'https://www.example.com:443?'.
    http_build_query(
        array(
            'key1'=>'value1',
            'key2'=>'value2'
        )
    ),
    array(
        'header'=>array(
            'Accept: text/html,application/xhtml+xml,application/xml',
            'Accept-Language: en-us'
        ),
        'follow_location'=>FALSE,
        'max_redirects'=>30,
        'ignore_errors'=>TRUE
    )
);

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

Fat-Free может использовать любые средства, доступные на вашем веб-сервере для запуска метода request(): оболочки потока PHP (allow_url_fopen), модуль cURL или низкоуровневые сокеты.

Загрузка файлов

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

$f3->route('GET /downloads/@filename',
    function($f3,$args) {
        // send() method returns FALSE if file doesn't exist
        if (!Web::instance()->send('/real/path/'.$args['filename']))
            // Generate an HTTP 404
        $f3->error(404);
    }
);

Удаленные и распределенные приложения

Метод request() также можно использовать в сложных приложениях SOAP или XML-RPC, если вы обнаружите необходимость в другом веб-сервере для обработки данных от имени вашего компьютера, что позволит использовать возможности распределенных вычислений. На W3Schools.com есть отличное руководство по SOAP, так же, TutorialsPoint.com дает хороший обзор XML-RPC.

Плагины F3

Для F3 доступно гораздо больше плагинов. Загляните в Справочник по API, чтобы получить о них больше информации.

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