composer-config-plugin
composer-config-plugin copied to clipboard
Rewrite to use parser or tokenizer instead of serializing
The idea is further development of https://github.com/yiisoft/composer-config-plugin/pull/117.
Potentially we can avoid serializing by following these steps while merging configs:
- Tokenize/parse config. Replace all closures,
$_ENVreferences andrequirewith unique placeholders. Original code strings are kept in an array where key is this unique unique placeholder name. - Read configs produced during step 1 with PHP. Merge them.
- Tokenize/parse config produced during step 2. Replace unique placeholders with strings saved during step 1.
Advantages
- No need to serialize anything.
- Will likely work well with PHP 8.
- No need to depend on
opis/closure(PHP 8 isn't ready, requires FFI for it) orriimu/kit-phpencoder(isn't active, extra layer). - End user will get native syntax for
requireand$_ENV.
Disadvantages
- Likely not straightforward to implement.
- Requires maintenance.
https://trello.com/c/zxrr0ArI/98-rewrite-composer-config-plugin-to-use-parser-or-tokenizer-instead-of-serializing
@Mirocow will attempt implementing it.
https://gist.github.com/samdark/86f2b9ff01a96892efbbf254eca8482d
Updated gist above based on recent chat discussions.