KD2FW (KD2 is not FrameWork) is a collection of tools and libraries developed for the KD2.org projects over the years.
Features:
- Lightweight
- Small
- Fast
- Code is simple and straightforward to read
- Simple API
- Easy to extend and adapt to own needs
- No extra dependency, you don't have to install any other library to use it
- Each component can be used outside the framework, there is no internal dependency
- PHP 7.4, compatible up to 8.2 (currently)
- Components comes with full documentation, examples and tests
This framework is used for some websites serving millions of web pages each day.
WARNING: there is currently no release cycle of kd2fw, all components are considered stable, and no backward-incompatible changes should be made (usually).
Version 7.4
- Active development branch
Version 7.3
Components
Database
- [DB]: abstraction layer to PDO with useful helper methods
- DB/SQLite3: abstraction layer to SQLite3, same API as [DB]
- DB/AbstractEntity: basic data entity, mapped to SQL tables
- DB/EntityManager: retrieve, load, and save entities
Graphics
- Image: a simple and fast image library providing resize, image informations and image thumbnail through EPEG (JPEG only), ExactImage, GD, ImageMagick or ImLib (will use the fastest available option).
- Blob: to get image size (supports PNG, JPEG and GIF) and EXIF orientation from image blobs, doesn't require any library
- EXIF: deals with EXIF data from JPEG files
- SVG/Bar: bar chart in SVG
- SVG/Pie: renders a pie chart in SVG
- SVG/Plot: renders a plot chart in SVG
- QRCode: generates QR codes
Templating
- Smartyer: fast and lightweight template engine, mostly compatible with Smarty / Template_Lite.
- Brindille: lightweight templating engine, similar to Twig/Smarty, but safe
- Mustachier: lightweight template engine based on Mustache (deprecated)
Emails
- Mail_Message: parser/writer of email MIME messages (with support for MIME encoded messages and attachments)
- Mail/Mailbox: lightweight IMAP client library using curl
- Mail/Discovery: discover SMTP/IMAP/POP3 servers from an email address, implementing Thunderbird auto-discovery
- SMTP: send emails using SMTP (supports SMTH AUTH and TLS).
Web
- Form: to validate and filter form fields, including CSRF protection
- HTMLDocument: DOMDocument/DOMNode wrapper that adds support for querySelector/querySelectorAll methods (easy to use CSS selectors, internally transformed to XPath queries, so it is quite fast)
- HTML/CSSParser: a lightweight CSS parser and DOM matching engine
- HTML/ToODS: transform a HTML table into an ODS document
SkrivLite: implementation of the Skriv Markup Language (inspired by Creole and Markdown).
WebDAV/Server: lightweight WebDAV server
WebDAV/WOPI: minimalist WOPI server
WebDAV/NextCloud: NextCloud compatibility layer over WebDAV, so that NextCloud and ownCloud clients may work with a WebDAV server
HTTP: make HTTP requests using curl or PHP file sockets
FeedParser: parses RSS and ATOM feeds, any version, even if they are invalid XML
Office
- Office/Calc/Writer: create ODS (LibreOffice spreadsheets) from raw PHP data
- Office/ToText: convert any OpenDocument file to text
### Misc
- Delta: to compute and apply deltas between two revisions of the same file (PHP port of Fossil delta algorithm). Allows to store only differences between two edits of a text, may be useful for example in CVS or a Wiki.
- ErrorManager: error and exception handler with dev/prod mode, email reporting and more, like a lightweight version of Nette Tracy
- FossilInstaller: install and upgrade software, using PGP signing, and Fossil-SCM unversioned files API
- JSONSchema: validate JSON documents according to a JSON schema
- Karto: mapping/GPS tools
- UserSession: a basic PHP session manager that can be set to be non-blocking.
- Security: common security functions, including anti CSRF tokens
- Security_OTP: secure one time password generator/verifier, compatible with TOTP/HOTP and Google Authenticator
- SimpleDiff: to compute a text diff between two versions of a string (+patch utility)
- Test: unit testing library
- Translate: platform independent gettext replacement, parses Gettext MO and PO files, optional memory cache
- ZipReader
- ZipWriter
Legacy components (5.6 branch, unmaintained)
Source file | Documentation |
---|---|
BubbleBabble.php | (Documentation) Encodes and decodes using the Bubble Babble binary data encoding. Much like base64 but makes actually pronounceable pseudo-words. |
CacheCookie.php | Stores session data in a cookie (using MsgPack if available or JSON as a fallback), without using session files. For MsgPack you can use this pure PHP implementation but the PECL module "msgpack" is much faster. |
MemCache.php | memory cache wrapper (APCu, XCache, Opcache, etc.) |
MiniSkel.php | template-based programming language compatible with the SPIP CMS |
Singleton.php | used to make singleton classes |
XML_RPC_Server.php | a XML/RPC server using PHP XML/RPC extension |
Javascript components
- Text editor: extends textareas with tools to select, insert or replace content, with support for keyboard shortcuts.
- Code editor: built on Text editor, it provides an easy to use browser code editor including: common keyboard shortcuts, search, search and replace, go to line, fullscreen editing, indentation, brackets/parenthesis matching, line counter, and more.
- Karto (alpha): Mapping/GPS tools (Mercator projection)
- XHR.js: micro XmlHttpRequest library (less than 500 bytes minified)