A rawmode CLI editor, in PHP, based on the C Kilo tutorial: https://viewsourcecode.org/snaptoken/kilo/
Go to file
Timothy Warren fd478b697f
Some checks failed
timw4mail/php-kilo/pipeline/head There was a failure building this commit
Minor code tweaks, consolidate non-autoloaded code into one file
2023-10-10 10:25:38 -04:00
src Minor code tweaks, consolidate non-autoloaded code into one file 2023-10-10 10:25:38 -04:00
tests Add more attributes to test file 2022-09-01 09:29:07 -04:00
.editorconfig Add editorconfig 2019-10-10 15:49:18 -04:00
.gitignore Fix CTRL method 2020-02-05 16:32:17 -05:00
composer.json Minor code tweaks, consolidate non-autoloaded code into one file 2023-10-10 10:25:38 -04:00
composer.lock Minor code tweaks, consolidate non-autoloaded code into one file 2023-10-10 10:25:38 -04:00
Dockerfile Update dockerfile for build 2022-08-23 14:51:05 -04:00
Jenkinsfile Update build, hopefully to fix it 2022-08-23 14:49:01 -04:00
kilo Minor code tweaks, consolidate non-autoloaded code into one file 2023-10-10 10:25:38 -04:00
phpstan.neon More cleanup 2021-03-04 16:41:12 -05:00
phpunit.xml Fix more tests 2021-04-14 14:40:35 -04:00
README.md Minor code cleanup 2022-11-18 13:38:18 -05:00
test.php Add more attributes to test file 2022-09-01 09:29:07 -04:00

PHP Kilo

Build Status

A reimplementation of the Kilo tutorial in PHP. Also has some inspiration from the Hecto text editor tutorial. Requires PHP 8 and FFI.

Requirements

  • PHP 8.1
  • 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