Skip to content

unhandled-exception/pf

Repository files navigation

На Гитхабе лежит новая версия библиотеки — https://github.com/unhandled-exception/pf2.
PF 1.0 больше не развивается. Переходите на PF2. :)


Библиотека классов на языке Парсер 3, облегчающая жизнь разработчикам веб-приложений и сайтов. Лицензия — MIT (совместима с 2-х пунктной BSD-лицензией).

Текущая версия 1.0

Посмотреть историю изменений вы можете в файле 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-серверами и кеширование:

  • работа с SQL-серверами (pf/sql). Классы имеют почти такой же интерфейс, как и популярные классы Михаила Петрушина, но еще поддерживают транзакции, мемоизацию (identityMap) и safeInsert;
  • «универсальное» кеширование (pf/cache/pfCache.p);
  • generic-классы, реализующие некоторые сценарии использования баз данных, например, тегирование и хранение настроек приложений;
  • ORM-классы. Набор классов для объектно-реляционного отображения (pf/sql/orm).

Модули, реализующие MVC-фреймворк:

  • 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).

About

Фреймворк для Парсера PF (не развивается, новая версия — https://github.com/unhandled-exception/pf2)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages