PHP Framework based on ThePHPLeauge Packages/Components
Open Issues: 0
- doctrine/orm: ^2.5
- filp/whoops: ^2.1
- gedmo/doctrine-extensions: ^2.4
- league/booboo: ^1.0
- league/climate: ^3.2
- league/commonmark: ^0.13.1
- league/commonmark-extras: ^0.1.1
- league/container: ^2.2
- league/csv: ^8.0
- league/event: ^2.1
- league/flysystem: ^1.0
- league/flysystem-memory: ^1.0
- league/flysystem-vfs: ^1.0
- league/fractal: ^0.13.0
- league/geotools: ^0.7.0
- league/glide: ^1.0
- league/html-to-markdown: ^4.2
- league/monga: ^1.2
- league/oauth1-client: ^1.6
- league/oauth2-client: ^1.3
- league/oauth2-facebook: ^1.3
- league/oauth2-github: ^0.2.0
- league/oauth2-google: ^1.0
- league/oauth2-instagram: ^0.2.1
- league/oauth2-server: ^4.1
- league/period: ^3.1
- league/pipeline: ^0.2.2
- league/plates: ^3.1
- league/route: ^2.0
- league/statsd: ^1.3
- league/tactician: ^1.0
- league/tactician-container: ^1.0
- league/tactician-logger: ^0.9.0
- league/uri: ^4.1
- mtdowling/cron-expression: ^1.1
- swiftmailer/swiftmailer: ^5.4
- twig/extensions: ^1.3
- twig/twig: ^1.24
- league/factory-muffin: ^3.0
- league/factory-muffin-faker: ^1.0
- phpspec/phpspec: ^2.5
- phpspec/prophecy: ^1.6
- phpunit/phpunit: ^5.2
This package is not auto-updated.
Last update: 2020-09-04 20:36:15 UTC
This little framework is all about using ThePHPLeague components where possible. It adds some compatibility or accessibility layers around them as needed. The whole framework is intended for small to middle sized applications. Where possible it will using correct type hinting and the framework also tries to be explicit about almost everything.
The Frameworks intend is to only use automatic dependency resolving and not injecting the Container directly into Services. This is not a hard-limit but bridge components of the framework will be built with this in mind.
There will be an Interface for every compatibility layer of the LeaugeFw. If possible the PSR Interfaces are used. So it should be easy to make the whole think compatible with almost every Framework out there.
The DI Container can also be reconfigured within the Bootstrap process. In fact the supplied Bootstrap is not really needed. It will just ease the usage, as it just initializes some core components from ThePHPLeauge.
The only requirement, beside the composer stuff, is PHP7 as I won't look back at old stuff. It may run on 5.5+, I guess. Maybe I will setup some tests soon and get this checked...
There are no by-convention and everything must be configured to be usable. However there are some recommendations:
app/contains the whole application code.
examples/shows an possible directory setup.
lib/will be moved into its own Composer package later on.
public/is the facing part of the application and only this one should be accessible from the web.
var/holds all generated cache data and/or dynamic configuration data, like yml or ini configurations.
The benefit of using this structure is that it's almost instantly compatible with some 3rd party tools.
public/ structure makes the configuration and usage of
laravel-elixir a breeze.
Some modern PHP applications also store their configuration and cache within a
var/ folder, so it's easier
to find those data when searching through the application folders.
Why another framework and not ?
It's not about "Whoohoo, I created another, in my opinion super easy, super fast or super duper configurable micro framework!!!!!!11!1 Lets Microbenchmark it!1!11" Its all about the "No Framework" approach, like described in this repository here. Composer makes it somewhat easy and I though why not as many components from one namespace as possible?
So I just wanted to hack something together just to get used to all the processes and maybe to use it in some small private projects. I also feel that some frameworks just suck for me, because you'll need some 'idehelper.php' to get proper hinting in your favorite IDE. Some others have the problem that they are too "global" for me, I am not a fan of this facades stuff introduced by laravel.
I just like real proper Container DI, with autowiring, which however must be configured explicitly first. No magic involved please! Because we all know, magic must be cached and magic sometimes get out of hand.