На Гитхабе лежит новая версия библиотеки — https://github.com/unhandled-exception/pf2.
PF 1.0 больше не развивается. Переходите на PF2. :)
Библиотека классов на языке Парсер 3, облегчающая жизнь разработчикам веб-приложений и сайтов. Лицензия — MIT (совместима с 2-х пунктной BSD-лицензией).
Посмотреть историю изменений вы можете в файле CHANGELOG.
Библиотека состоит из нескольких частей, большинство из которых можно использовать независимо. Библиотека работает с Парсером версии не ниже 3.3.0 (настоятельно рекомендуется 3.4.0 и выше). В коде модулей содержится некоторое количество коментариев, документация и примеры будут появляться на этом сайте по мере написания. Некоторые технические подробности работы модулей библиотеки можно посомтреть в файле TECHNOTES.
Библиотека использует кодировку UTF-8, как основную. Т.е. предполагается, что в Парсере задан $request:charset[utf-8].
- общий предок практический всех классов PF'а (pf/types/pfClass.p) - содержит набор методов, упрощающих создание свойств, обеспечивающих совместимость наследников с базовыми классами (методы int, double, bool, contains, foreach) и пр.;
- функции для обработки строк (pf/types/pfString.p);
- валидация данных (pf/types/pfValidate.p);
- коллекции — списки, стеки, очереди, словари (pf/collections).
- Класс pfRuntime, содержащий методы для "умной" сборки мусора и профилирования кода.
- работа с операционной системой (pf/io/pfOS.p);
- модуль, упрощающий написание консольных скриптов (pf/io/pfConsole.p);
- интерфейс-обертка к встроенному в Парсер интерфейсу к cURL (pf/io/pfCFile.txt);
- API-классы, реализующие интерфейсы некоторых внешних сервисов с которыми мне приходилось иметь дело.
- работа с SQL-серверами (pf/sql). Классы имеют почти такой же интерфейс, как и популярные классы Михаила Петрушина, но еще поддерживают транзакции, мемоизацию (identityMap) и safeInsert;
- «универсальное» кеширование (pf/cache/pfCache.p);
- generic-классы, реализующие некоторые сценарии использования баз данных, например, тегирование и хранение настроек приложений;
- ORM-классы. Набор классов для объектно-реляционного отображения (pf/sql/orm).
- pfModule — базовый класс, который позволяет очень гибко обрабатывать URL-подобные «экшны», а также позволяет собирать иерархии модулей для разделения логики на мелкие части (pf/modules);
- база веб-фреймворка (pf/web), позволяющая строить гибкие веб-приложения (описание смотрите в файле TECHNOTES);
- Temple — модульный шаблонный движок, поддерживающий наследование и импорты, в качестве базового языка используется Парсер (pf/templet/pfTemple.txt);
- работа с авторизацией (pf/auth/auth.txt);
- защита от "дублирования" форм и CSRF (pf/web/helpers/pfAntiFlood.p);
- транслитирирование URLов (pf/wiki/pfURLTranslit.p).
- pfAssert — модуль, облегчающий программирование с использованием «утверждений» (pf/tests/pfAssert.p);
- организация unit-тестов (pf/tests) - работает, но требует серьезного рефакторинга после появления в Парсере класса reflection.
- фреймворк для разработки консольных скриптов (pf/management);
- модуль для работы с изображениями через пакет Imagemagick (pf/images);
- типографика и параграфика (pf/wiki/pfTypografica.p и pf/wiki/pfParagrafica.p);
Следующие модули интенсивно используют регулярные выражения, совместимые исключительно с кодировкой windows-1251, что требует их адаптации к новой версии PCRE, используемой в Парсере начиная с версии 3.3.0:
- модуль для парсинга wiki-разметки (pf/pfWikiFormatter.p);
- «раскраска» синтаксиса (pf/highliters).