elephox / framework
Yet another PHP framework.
v0.5.0
2022-05-01 23:55 UTC
Requires
- php: ^8.1 <8.3
- ext-ctype: *
- ext-json: *
- ext-mbstring: *
- elephox/mimey: ^4.0
- jetbrains/phpstorm-attributes: ^1.0
- psr/cache: ^3.0
- psr/container: ^2.0
- psr/log: ^3.0
- ricardoboss/php-console-logger: ^2.1
- symfony/process: ^6.0
- vlucas/phpdotenv: ^5.4
Requires (Dev)
- doctrine/orm: ^2.11
- elephox/builder-whoops-handler: dev-develop
- elephox/builder-whoops-middleware: dev-develop
- elephox/composer-module-sync: ^1.5
- ergebnis/composer-normalize: dev-main
- friendsofphp/php-cs-fixer: dev-master
- infection/infection: ^0.26
- mockery/mockery: ^1.5
- nunomaduro/collision: ^6.2
- phpbench/phpbench: ^1.2
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.16
- roave/no-leaks: ^1.3
- vimeo/psalm: dev-master
Suggests
- ext-fileinfo: To get the mime type of a file
Provides
Replaces
- elephox/autoloading: v0.5.0
- elephox/cache: v0.5.0
- elephox/collection: v0.5.0
- elephox/configuration: v0.5.0
- elephox/console: v0.5.0
- elephox/di: v0.5.0
- elephox/events: v0.5.0
- elephox/files: v0.5.0
- elephox/http: v0.5.0
- elephox/logging: v0.5.0
- elephox/oor: v0.5.0
- elephox/stream: v0.5.0
- elephox/support: v0.5.0
- elephox/web: v0.5.0
- dev-develop / 0.6.x-dev
- v0.5.0
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- 0.4.0-alpha5
- 0.4.0-alpha4
- 0.4.0-alpha3
- 0.4.0-alpha2
- 0.4.0-alpha1
- 0.3.27
- v0.3.26
- v0.3.25
- v0.3.24
- v0.3.23
- v0.3.22
- v0.3.21
- v0.3.20
- v0.3.19
- v0.3.18
- v0.3.17
- v0.3.16
- v0.3.15
- v0.3.14
- v0.3.13
- v0.3.12
- v0.3.11
- v0.3.10
- v0.3.9
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.1
- v0.3
- v0.2.0
- v0.1.0
- dev-release/0.5
- dev-release/0.4
- dev-release/0.3
- dev-goal/promises
This package is auto-updated.
Last update: 2022-05-02 00:15:27 UTC
README
This is a library project providing building blocks for building your own PHP application.
📚 Documentation
Visit elephox.dev for the documentation.
🎯 Goals
Take a look at the Notion page for the goals of this project: Notion
✨ Contributing
Contributions in all forms are welcome. Make sure to read elephox.dev/contributing for the details.
🏷️ Get the Badge
Using Elephox in your project? Add a badge to your README:
Replace the value of the style
parameter for different styles (flat
, flat-square
, plastic
, for-the-badge
).
[](https://elephox.dev)
<a href="https://elephox.dev"><img alt="Elephox Framework" src="https://img.shields.io/badge/framework-Elephox-blue?style=flat&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8%2BCjxzdmcKICAgd2lkdGg9IjcxLjAxNTk2MW1tIgogICBoZWlnaHQ9IjgxLjI4Njg5Nm1tIgogICB2aWV3Qm94PSIwIDAgMjUxLjYwOTQ2IDI4OC4wMDAwMSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMyIKICAgc29kaXBvZGk6ZG9jbmFtZT0ibGV0dGVyLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4xLjIgKGI4ZTI1YmU4MzMsIDIwMjItMDItMDUpIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzNyI%2BCiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIGlkPSJuZW9uIj4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzNjZTdmNTtzdG9wLW9wYWNpdHk6MSIKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBpZD0ic3RvcDgyNCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I2RjMjg3NztzdG9wLW9wYWNpdHk6MSIKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBpZD0ic3RvcDgyNiIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ%2BCiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIKICAgICAgIHhsaW5rOmhyZWY9IiNuZW9uIgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50ODMwIgogICAgICAgeDE9IjI3Ny4yMzUwOCIKICAgICAgIHkxPSI3MC42MjE1MjkiCiAgICAgICB4Mj0iMjIyLjcxNzk2IgogICAgICAgeTI9IjM2MS4yNTY3NyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtNDYuMzIxNzA2LC03Mi4yOTE1NDgpIiAvPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzUiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMCIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjEuNDE0MjEzNiIKICAgICBpbmtzY2FwZTpjeD0iNTEzLjM1OTUxIgogICAgIGlua3NjYXBlOmN5PSIxNDcuNzg1MzEiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDkiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkMjYxMyIKICAgICAgIG9yaWdpbng9Ii00Ni4zMjMwMjgiCiAgICAgICBvcmlnaW55PSItNzIuMjkxNTQzIiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxwYXRoCiAgICAgaWQ9IlBhdGgiCiAgICAgZmlsbD0ibm9uZSIKICAgICBzdHJva2U9IiMwMDAwMDAiCiAgICAgc3Ryb2tlLXdpZHRoPSIxIgogICAgIGQ9Ik0gMjAwLjgxOTc0LDI4OCBIIC0yLjY0MTM2MTdlLTQgTCA1MC44MTk3MzUsMCBIIDI1MS42MDk3NCBsIC0xMS4yLDYyLjQxMDAwMiBoIC0xMjguOCBsIC05LjIsNTMuOTk5OTk4IGggMTA2LjQxIGwgLTExLjIxLDYyLjM5IEggOTEuMjA5NzM0IGwgLTgsNDYuNzkgSCAyMTEuOTk5NzQgWiIKICAgICBzdHlsZT0iZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50ODMwKTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIKICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXHJpYlxEb3dubG9hZHNcRWxlcGhveFxsb2dvLWJhbm5lci5wbmciCiAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9Ijk2IgogICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI5NiIKICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjY2NjY2MiIC8%2BCjwvc3ZnPgo%3D"></a>
📋 Source code annotations
✅ To Do
- modules/Collection/src/ArrayList.php
- replace generic enumerable function with array-specific functions where possible
- modules/Collection/src/ArrayMap.php
- replace generic enumerable function with array-specific functions where possible
- modules/Collection/src/ArraySet.php
- replace generic enumerable function with array-specific functions where possible
- modules/Collection/src/IsKeyedEnumerable.php
- rewrite more functions to use iterators
- modules/Collection/src/Iterator/OrderedIterator.php
- cache keys
- modules/Logging/test/AnsiColorSinkTest.php
- write tests for background and options
- modules/Web/src/Routing/InvalidRequestController.php
- change message to be more general and/or create more specific exceptions
⚠️ Fixes
- modules/Collection/src/IsArrayEnumerable.php
- this seems to be worse than the generic implementation in IsEnumerable (according to phpbench). This can be improved.
- modules/Collection/src/IsEnumerable.php
- de-duplicate code from IsEnumerable and IsKeyedEnumerable where possible (move iterator creation to trait and return self with created iterator)
🤔 Maybe
- modules/Collection/src/Iterator/ReverseIterator.php
- only reverse key order if key is numeric