Why use this instead of Slim? Slim is basically a fully-baked version of this (with a similar router), and it's decoupled, so you can use only the parts that you want.
They're not strange/crazy enough to make it a fun programming challenge, and for something that's intended for use (even non-production use) they make the code less usable.
"No namespaces" and "no new functions or classes" in particular don't make any sense. Anonymous functions are just like functions, except they're harder to identify in a stack trace.
I considered it, but for some reasons I didn't do it:
1. the main closure is useless if the .php file isn't included manually using require(_once)/include(_once) functions ( https://github.com/EmanueleMinotto/crystal/wiki/Tip ) because it returns directly at line 144
2. the autoloader become useless too, because there's Composer that does it very well
3. the PHP world is full of great frameworks, microframeworks, routers and other components, it will become rapidly a common library and not a good library because it doesn't follow development best practices but only a set of rules (defined in the CONTRIBUTING.md file)
Crystal can't be packed in a Composer package, but Composer can be used in a project including crystal.
7 comments
[ 3.3 ms ] story [ 22.9 ms ] threadThey're not strange/crazy enough to make it a fun programming challenge, and for something that's intended for use (even non-production use) they make the code less usable.
"No namespaces" and "no new functions or classes" in particular don't make any sense. Anonymous functions are just like functions, except they're harder to identify in a stack trace.
1. the main closure is useless if the .php file isn't included manually using require(_once)/include(_once) functions ( https://github.com/EmanueleMinotto/crystal/wiki/Tip ) because it returns directly at line 144 2. the autoloader become useless too, because there's Composer that does it very well 3. the PHP world is full of great frameworks, microframeworks, routers and other components, it will become rapidly a common library and not a good library because it doesn't follow development best practices but only a set of rules (defined in the CONTRIBUTING.md file)
Crystal can't be packed in a Composer package, but Composer can be used in a project including crystal.
Just seems wrong.
Personal preference though.