Rewrite to use parser or tokenizer instead of serializing
samdark opened this issue · 4 comments
samdark commented
The idea is further development of #117.
Potentially we can avoid serializing by following these steps while merging configs:
- Tokenize/parse config. Replace all closures,
$_ENV
references andrequire
with 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
require
and$_ENV
.
Disadvantages
- Likely not straightforward to implement.
- Requires maintenance.
samdark commented
samdark commented
Updated gist above based on recent chat discussions.