2019-10-15 14:57:58 -04:00
# PHP Kilo
2021-03-09 12:50:29 -05:00
[![Build Status ](https://jenkins.timshome.page/buildStatus/icon?job=timw4mail%2Fphp-kilo%2Fmaster )](https://jenkins.timshome.page/job/timw4mail/job/php-kilo/job/master/)
2019-12-05 11:04:36 -05:00
2021-03-11 16:56:02 -05:00
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
2022-11-18 13:38:18 -05:00
* PHP 8.1
2021-03-11 16:56:02 -05:00
* FFI enabled
2019-10-15 14:57:58 -04:00
## Implementation notes:
2021-03-11 16:56:02 -05:00
* The `editor` prefix has been removed from all the relevant functions, instead they are methods on one of the implementation classes.
2019-10-15 14:57:58 -04:00
* Enums are faked with class constants
2019-11-13 16:26:19 -05:00
* Composer is used for autoloading
2019-10-22 16:16:28 -04:00
* 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.
2021-03-11 16:56:02 -05:00
* 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