# PHP Kilo [![Build Status](https://jenkins.timshome.page/buildStatus/icon?job=timw4mail%2Fphp-kilo%2Fmaster)](https://jenkins.timshome.page/job/timw4mail/job/php-kilo/job/master/) A reimplementation of the [Kilo](https://viewsourcecode.org/snaptoken/kilo/index.html) tutorial in PHP. Also has some inspiration from the [Hecto](https://www.philippflenker.com/hecto/) text editor tutorial. Requires PHP 8 and FFI. ## Requirements * PHP 8 * FFI enabled ## Implementation notes: * The `editor` prefix has been removed from all the relevant functions, instead they are methods on one of the implementation classes. * Enums are faked with class constants * Composer is used for autoloading * Properties that must be manually updated in the C version (like counts/string length) are implemented with magic methods, so they are essentially calculated on read. * Generally, if a function exists in PHP, with the same name as the C function, the PHP version will be used. * Classes are used to modularize functionality, and reduce the amount of functions with global side effects